我说的是“瘦”、“常规”、“中”、“半粗”的字体。不是粗体/斜体文本样式。注意:我正在寻找一种通过XML在可重用样式中应用字体粗细的方法。可以通过编程方式应用字体粗细(如Google Issue:https://issuetracker.google.com/issues/145311058中所述),但当布局资源中有数百个TextViews时,这并不理想。
例如,我在应用程序主题级别设置了一个字体:
<style name="BaseTheme" parent="Theme.MaterialComponents.Light.DarkActionBar.Bridge">
<item name="fontFamily">@font/rubik</item>
<item name="android:fontFamily">@font/rubik</item>
...
</style>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font
android:font="@font/rubik_regular"
android:fontStyle="normal"
android:fontWeight="300"
app:font="@font/rubik_regular"
app:fontStyle="normal"
app:fontWeight="300" />
<font
android:font="@font/rubik_italic"
android:fontStyle="italic"
android:fontWeight="300"
app:font="@font/rubik_italic"
app:fontStyle="italic"
app:fontWeight="300" />
<font
android:font="@font/rubik_medium"
android:fontStyle="normal"
android:fontWeight="500"
app:font="@font/rubik_medium"
app:fontStyle="normal"
app:fontWeight="500" />
<font
android:font="@font/rubik_medium_italic"
android:fontStyle="italic"
android:fontWeight="500"
app:font="@font/rubik_medium_italic"
app:fontStyle="italic"
app:fontWeight="500" />
</font-family>
然后,我将自定义样式应用于我的TextViews上的textAppearance
属性:
<style name="SmallTextOnBackgroundMediumWeightTextView">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:textColor">?attr/themeColorTextOnBackground</item>
<item name="android:fontFamily">@font/rubik</item>
<item name="fontFamily">@font/rubik</item>
<item name="android:textFontWeight">500</item>
</style>
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/SmallTextOnBackgroundMediumWeightTextView" />
注意:在本例中,在我的自定义样式中设置<item name="android:textFontWeight">500</item>
不会将中等粗细字体应用于我的TextView。
我已经尝试在我的样式中显式地将android:fontFamily
和fontFamily
项设置为特定的中等字体@font/rubik_medium
。这是行不通的。
唯一起作用的似乎是直接在TextView上显式地设置android:textStyle="bold"
,这感觉并不正确,如果您有多个“更大胆”的权重,也不能解决问题。或者,您可以直接在TextView上设置android:textFontWeight="500"
,这违背了为TextViews提供可重用自定义样式的目的,因为您将在每个..单人..TextView。
有人能帮帮我吗?如何重用自定义样式并在其中设置字体粗细?
发布于 2019-12-22 19:27:18
请试试这个
<style name="SmallTextOnBackgroundMediumWeightTextView">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:textColor">?attr/themeColorTextOnBackground</item>
<item name="android:fontFamily">@font/rubik</item>
<item name="fontFamily">@font/rubik</item>
<item name="android:textFontWeight">500</item>
<item name="android:fontWeight">500</item>
<item name="fontWeight">500</item>
</style>
经过im测试后,android:textFontWeight需要api级别28,android:fontWeight需要api级别26,希望能对您有所帮助。
https://stackoverflow.com/questions/59427336
复制相似问题