我在我的应用程序中使用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>

当前回答

随着Android Oreo的发布,您可以使用支持库来实现这一目标。

签入你的应用构建。Gradle,如果你有支持库>= 26.0.0 添加"font"文件夹到你的资源文件夹,并添加你的字体 在你的应用程序主样式中引用你的默认字体家族: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <项目名称= " android: fontFamily " > @font / your_font > < /项目 <item name="fontFamily">@font/your_font</item> <!——目标android sdk版本< 26和> 14如果主题不是AppCompat——> > < /风格

更多详细信息请访问https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html。

其他回答

答案是肯定的。

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 Oreo的发布,您可以使用支持库来实现这一目标。

签入你的应用构建。Gradle,如果你有支持库>= 26.0.0 添加"font"文件夹到你的资源文件夹,并添加你的字体 在你的应用程序主样式中引用你的默认字体家族: <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <项目名称= " android: fontFamily " > @font / your_font > < /项目 <item name="fontFamily">@font/your_font</item> <!——目标android sdk版本< 26和> 14如果主题不是AppCompat——> > < /风格

更多详细信息请访问https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html。

答案是否定的,你不能。 是否可以为整个应用程序设置自定义字体? 获取更多信息。

有一些变通方法,但没有“在这里写一行代码,我所有的字体都将是这个而不是那个”。

(我有点感谢谷歌和苹果公司)。自定义字体是有一席之地的,但如果让它们在整个应用程序范围内容易被取代,就会创造出一个Comic Sans应用程序的整个世界)

这在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/

Android并没有在整个应用程序中应用字体的方式上提供很多支持(参见本期)。你有4个选项来设置整个应用程序的字体:

选项1:应用反射来更改系统字体 选项2:为每个需要自定义字体的视图创建并子类化自定义视图类 Option3:实现一个遍历视图的视图爬虫 当前屏幕的层次结构 选项4:使用第三方库。

这些选项的详细信息可以在这里找到。