我需要为我的应用程序中的所有TextView / Button设置自定义样式(我需要更改字体系列)
为了实现我的意图,我在我的App风格中编写了以下代码:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@null</item>
<item name="android:textColor">@color/textColorPrimary</item>=
<item name="android:textViewStyle">@style/RobotoTextViewStyle</item>
<item name="buttonStyle">@style/RobotoButtonStyle</item>
<!-- <item name="android:typeface">monospace</item> -->
</style>
<style name="RobotoTextViewStyle" parent="android:Widget.TextView">
<item name="android:fontFamily">sans-serif-condensed-light</item>
</style>
<style name="RobotoButtonStyle" parent="android:Widget.Holo.Button">
<item name="android:fontFamily">sans-serif-condensed-light</item>
</style>
正如您所看到的,我正在使用AppCompat主题,但我无法弄清楚如何扩展正确的textview。事实上,我正在使用parent="android:Widget.Holo.Button"
,但这样我就失去了AppCompat按钮样式。
PS:使用该代码我的所有textview和按钮都会更改font-family,除了工具栏和NavigationView,这是正常的吗?
答案 0 :(得分:0)
<style name="RobotoTextViewStyle" parent="Widget.AppCompat.AutoCompleteTextView">
<item name="android:fontFamily">sans-serif-condensed-light</item>
</style>
<style name="RobotoButtonStyle" parent="Widget.AppCompat.Button">
<item name="android:fontFamily">sans-serif-condensed-light</item>
</style>
答案 1 :(得分:0)
第1步) 将.ttf格式(Roboto-Black.ttf,Roboto-Bold.ttf,RobotoCondensed-Bold.ttf,Roboto-Regular.ttf等等)急需的字体文件的变体复制到'assets'目录。(创建一个,如果你还没有一个在'main'目录中。)
第2步) 在'xml'文件夹中创建一个名为'fonts.xml'的文件,该文件应位于'res'目录中。 (RES \ XML \ fonts.xml)。声明您的首选字体名称以匹配'assets'目录中匹配的文件名。
<!-- Font with 10 styles defined -->
<family>
<nameset>
<name>rb_regular</name>
<name>rb_bold</name>
<name>rb_light</name>
<name>rb_bolditalic</name>
<name>rb_thin</name>
<name>rb_medium</name>
<name>rb_condensed_regular</name>
<name>rb_condensed_light</name>
<name>rb_condensed_bold</name>
<name>rb_black</name>
</nameset>
<fileset>
<file>Roboto-Regular.ttf</file>
<file>Roboto-Bold.ttf</file>
<file>Roboto-Light.ttf</file>
<file>Roboto-BoldItalic.ttf</file>
<file>Roboto-Thin.ttf</file>
<file>Roboto-Medium.ttf</file>
<file>RobotoCondensed-Regular.ttf</file>
<file>RobotoCondensed-Light.ttf</file>
<file>RobotoCondensed-Bold.ttf</file>
<file>Roboto-Black.ttf</file>
</fileset>
</family>
在样式文件中定义它们,如下所示
//textviews
<style name="TextViewRobotoRegular" parent="android:Widget.TextView">
<item name="android:fontFamily" tools:targetApi="jelly_bean">rb_regular</item>
</style>
<!-- Roboto-Bold-->
<style name="TextViewRobotoBold" parent="android:Widget.TextView">
<item name="android:fontFamily" tools:targetApi="jelly_bean">rb_bold</item>
</style>
<!-- Roboto-Light-->
<style name="TextViewRobotoLight" parent="android:Widget.TextView">
<item name="android:fontFamily" tools:targetApi="jelly_bean">rb_italic</item>
</style>
<!-- Roboto-BoldItalic-->
<style name="TextViewRobotoBoldItalic" parent="android:Widget.TextView">
<item name="android:fontFamily" tools:targetApi="jelly_bean">rb_bolditalic</item>
</style>
//button
<style name="RobotoRegular" parent="android:Widget.Button">
<item name="android:fontFamily" tools:targetApi="jelly_bean">rb_regular</item>
</style>
最后在布局文件中使用它们
<TextView
style="@style/TextViewRobotoLight"
android:layout_width="75dp"
android:layout_height="30dp" />