这是我在style.xml
中的AppTheme样式
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:fontFamily" tools:targetApi="jelly_bean">@font/montserrat_regular</item>
<item name="fontFamily">@font/montserrat_regular</item>
</style>
和
manifest.xml
中的应用程序标签 <application
android:name=".Amelio"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
我想要的是在AppTheme中设置fontFamily,因此我不必在应用程序的每个组件上进行设置。
但我想在应用程序的某些TextView中设置自定义字体。
问题是当我在
fontFamily
中设置AppTheme
时,我无法在任何fontFamily
上设置字体或TextView
。但是当我从fontFamily
删除font
和AppTheme
时,我可以设置它。这是预览-在AppTheme样式中具有font属性
AppTheme样式中没有字体属性
注意:我知道可以使用font或fontFamily,如果可以的话我只是在尝试两者。所以请忽略它。
最佳答案
Khemraj建议使用https://stackoverflow.com/a/16407123/6891563是正确的,因为当您要覆盖某个组件的属性时,您需要覆盖其样式,因此在添加时(取自侯赛因·埃尔·费基):
<!-- Into a styles.xml--!>
<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
<item name="android:fontFamily">sans-serif-light</item>
</style>
<!-- Into a themes.xml--!>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
<item name="buttonStyle">@style/RobotoButtonStyle</item>
</style>
您将覆盖所有TextView的样式,因此,每当您使用AppTheme时,TextView组件都将侦听RobotoTextViewStyle属性并使用它们。