我在我的应用程序中使用Roboto light字体。要设置字体,我必须添加android:fontFamily="sans-serif-light"到每个视图。有什么方法来声明Roboto字体作为默认字体家族整个应用程序?我试过这样做,但似乎不管用。
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
答案是肯定的。
TextView和Button类的Global Roboto light:
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
<item name="android:buttonStyle">@style/RobotoButtonStyle</item>
</style>
<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
<item name="android:fontFamily">sans-serif-light</item>
</style>
<style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
<item name="android:fontFamily">sans-serif-light</item>
</style>
只需从list themes.xml中选择您想要的样式,然后根据原始样式创建您的自定义样式。最后,应用样式作为应用程序的主题。
<application
android:theme="@style/AppTheme" >
</application>
它只适用于像Roboto这样的内置字体,但这就是问题所在。对于自定义字体(例如从资产中加载),此方法将不起作用。
编辑08/13/15
如果你使用AppCompat主题,记得删除android:前缀。例如:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
<item name="buttonStyle">@style/RobotoButtonStyle</item>
</style>
注意buttonStyle不包含android: prefix,但textViewStyle必须包含它。
这在Android Studio中非常非常简单。
在这个方法中,你需要验证你的minsdkverison。minsdkversion >=16
在“res”文件夹中创建“font”文件夹。在android studio中新建>文件夹>字体文件夹。
将您的字体文件上传到该字体文件夹。
在你的style.xml文件中,在“Base application theme”的style下添加这一行。
<项目名称= " android: fontFamily " > @font / ubuntubold > < /项目
更多的细节:
https://coderog.com/community/threads/how-to-set-default-font-family-for-entire-android-app.72/