当为 AppTheme 定义默认字体时,是否可以更改字体系列?
Is it possible to change font family when a default is defined for the AppTheme?
我在 App 主题中为我的应用程序定义默认字体系列,如下所示:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="fontFamily">@font/trade_gothic_ltstd</item>
</style>
但是,对于某些小部件,我想要不同的字体系列。很正常,对吧?嗯,设置 android:fontFamily
没有效果。它总是 仍然使用默认的贸易哥特式字体。如果我从 AppTheme 中删除 fontFamily,那么我所有的 fontFamily 分配都会神奇地开始工作。
要真正改变默认字体,我必须创建下面的样式,并将其作为 style=@style/KnockoutFont
应用于任何 TextView
、EditText
等。
<style name="KnockoutFont" parent="AppTheme">
<item name="fontFamily">@font/knockout_htf49_liteweight</item>
</style>
这是预期的吗?
你做的是正确的。但是如果您正在寻找替代方案,您可以尝试在代码中以编程方式为您想要的视图应用字体,如下所示:
//Setting typefaces - this will give stylish fonts
Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/FONT_NAME.EXTENSION");
textView.setTypeface(typeface);
既然这是在程序中,它应该覆盖主题设置的默认字体。我不确定,但这应该有效。如果你尝试了,请告诉我。
我在 App 主题中为我的应用程序定义默认字体系列,如下所示:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="fontFamily">@font/trade_gothic_ltstd</item>
</style>
但是,对于某些小部件,我想要不同的字体系列。很正常,对吧?嗯,设置 android:fontFamily
没有效果。它总是 仍然使用默认的贸易哥特式字体。如果我从 AppTheme 中删除 fontFamily,那么我所有的 fontFamily 分配都会神奇地开始工作。
要真正改变默认字体,我必须创建下面的样式,并将其作为 style=@style/KnockoutFont
应用于任何 TextView
、EditText
等。
<style name="KnockoutFont" parent="AppTheme">
<item name="fontFamily">@font/knockout_htf49_liteweight</item>
</style>
这是预期的吗?
你做的是正确的。但是如果您正在寻找替代方案,您可以尝试在代码中以编程方式为您想要的视图应用字体,如下所示:
//Setting typefaces - this will give stylish fonts
Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/FONT_NAME.EXTENSION");
textView.setTypeface(typeface);
既然这是在程序中,它应该覆盖主题设置的默认字体。我不确定,但这应该有效。如果你尝试了,请告诉我。