2015-07-14 22 views
15

Tôi đã làm những gì tài liệu của ông đã chỉ đạo khi thiết lập font chữ mặc định:Thư pháp thư viện bằng cách chrisjenx không hoạt động

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setupDefaultFont(); 

     setContentView(R.layout.activity_main); 

     setupToolbarAndNavigationDrawer(); 
    } 

    public void setupDefaultFont() { 
     CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
         .setDefaultFontPath("fonts/OpenSans-Regular.ttf") 
         .setFontAttrId(R.attr.fontPath) 
         .build() 
     ); 
    } 

Tôi cũng đặt các phông chữ trong assets/fonts, nhưng vô ích. Roboto vẫn hiển thị dưới dạng phông chữ mặc định chứ không phải Open Sans. Tôi đã thử áp dụng nó một cách thủ công từng cái một cho mỗi TextView, nhưng nó vẫn không hoạt động.

Bất kỳ ý tưởng nào về lý do tại sao tính năng này không hoạt động?

Thông tin thêm: (Trong trường hợp nó rất hữu ích) My miniSdkVersion là 15 và targetSdkVersion là 22. Đây là những phụ thuộc của tôi:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.2.0' 
    compile 'com.android.support:design:22.2.0' 
    compile 'com.android.support:recyclerview-v7:21.0.3' 
    compile 'com.android.support:cardview-v7:21.0.3' 
    compile 'de.hdodenhof:circleimageview:1.2.1' 
    compile 'uk.co.chrisjenx:calligraphy:2.1.0' 
} 

Và đây là chủ đề tùy chỉnh mà tôi đang sử dụng.

<resources> 
    <style name="myIIT_theme" parent="Theme.AppCompat"> 
     <item name="colorPrimaryDark">@color/primary_dark</item> 
     <item name="colorPrimary">@color/primary</item> 
     <item name="android:textColorPrimary">@color/white</item> 
     <item name="android:windowBackground">@color/tertiary_dark</item> 
     <item name="android:activatedBackgroundIndicator">@drawable/selected_drawer</item> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 
</resources> 

Trả lời

30

Đối với cấu hình có hiệu lực, bạn nên thiết lập font chữ mặc định trong phương thức onCreate() của tùy chỉnh ứng dụng lớp học của bạn, thay vì trong hoạt động này.

Ngoài ra, các hướng dẫn tại https://github.com/chrisjenx/Calligraphy nói với tiêm vào bối cảnh, bằng cách ghi đè một phương pháp trong các hoạt động như sau:

@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 
+2

Thanks anyway! Chỉ cần tìm hiểu về nó trước khi bạn trả lời. Được cho là phải tự trả lời nó ở đây. Cảm ơn mặc dù. – anobilisgorse

Các vấn đề liên quan