2015-12-02 47 views
1

是否可以在Android应用程序中设置自定义字体?为什么我的自定义字体未应用于所有应用程序?

我试了一下张贴here,但我不知道我的extends Application类...

任何帮助吗?

编辑:

我试过如下:

  • 添加资产文件夹,然后插入字体内侧,在这里看到:

enter image description here

  • 添加从Application延伸的新班级

  • 从我的AndroidManifest.xml调用此新班级。

  • 我去了我的风格,并添加它。

MyApp.java:

public class MyApp extends Application { 
    @Override 
    public void onCreate() { 
    super.onCreate(); 
    FontsOverride.setDefaultFont(this, "DEFAULT", "raleway_regular.ttf"); 
    // This FontsOverride comes from the example I posted above 
    } 
    } 

的AndroidManifest.xml:

<application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:name=".MyApp" 
     android:theme="@style/AppTheme"> 
    .... 

styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:fontFamily">default</item> 
</style> 

但我的字体仍然没有改变......任何想法?

然后调用MyApp类。但对我的字体没有影响...

编辑2:我意识到我的按钮在为我的按钮设置自定义样式后应用自定义字体。这里是我的自定义按钮样式:

<style name="MyButtonStyle" parent="Widget.AppCompat.Button"> 
    <item name="textAllCaps">false</item> 
    <item name="android:textAllCaps">false</item> 
</style> 

这里是现在的样子:

enter image description here

所以:我的按钮应用样式,而不是TextView。任何想法为什么我的自定义字体不适用于应用程序中的所有项目?

回答

1

试试看看这个代码。但是你需要在findViewByIdMethod(int id)的代码中初始化你的TextView或Button。

TextView yourTextView = findViewById(R.id.YourTextViewId);  
Typeface font = Typeface.createFromAsset(getActivity().getAssets(),"raleway_regular.ttf"); 
yourTextView.setTypeface(font); 
+0

我知道有一种方法可以一个接一个......并且这种方法可以一个一个正常工作。但我想通常... – Sonhja

1

存在于Android的自定义字体篦库:custom fonts

这里是一个示例如何使用它。

在gradle这个

你需要把此行

compile 'uk.co.chrisjenx:calligraphy:2.1.0' 

然后进行扩展应用的写这个代码的类`公共类应用程序扩展应用{ @覆盖 公共无效的onCreate(){ 超.onCreate();

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
        .setDefaultFontPath("your font path") 
        .setFontAttrId(R.attr.fontPath) 
        .build() 
    ); 
} 

}`

,并把这种方法的onCreate前的活动课。

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

和清单文件中的最后一件事情就是这样写的。

它会改变整个活动到你的字体!它简单而干净!

+0

我不是在寻找一个安卓字体...... Acutally我必须使用“Raleway”字体...... – Sonhja

+0

它不是一种字体来改变你的字体,你可以添加任何你想要的字体,它会出现每一个地方如果你想我可以发布我的代码如何使用它 –

+0

哦,这是一个自定义库! :哦,我必须试一试! – Sonhja

相关问题