首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将字体粗细应用于在TextView上设置为XML中的`textAppearance`的自定义样式?

如何将字体粗细应用于在TextView上设置为XML中的`textAppearance`的自定义样式?
EN

Stack Overflow用户
提问于 2019-12-20 23:02:34
回答 1查看 1.5K关注 0票数 0

我说的是“瘦”、“常规”、“中”、“半粗”的字体。不是粗体/斜体文本样式。注意:我正在寻找一种通过XML在可重用样式中应用字体粗细的方法。可以通过编程方式应用字体粗细(如Google Issue:https://issuetracker.google.com/issues/145311058中所述),但当布局资源中有数百个TextViews时,这并不理想。

例如,我在应用程序主题级别设置了一个字体:

代码语言:javascript
复制
<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属性:

代码语言:javascript
复制
<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:fontFamilyfontFamily项设置为特定的中等字体@font/rubik_medium。这是行不通的。

唯一起作用的似乎是直接在TextView上显式地设置android:textStyle="bold",这感觉并不正确,如果您有多个“更大胆”的权重,也不能解决问题。或者,您可以直接在TextView上设置android:textFontWeight="500",这违背了为TextViews提供可重用自定义样式的目的,因为您将在每个..单人..TextView。

有人能帮帮我吗?如何重用自定义样式并在其中设置字体粗细?

EN

回答 1

Stack Overflow用户

发布于 2019-12-22 19:27:18

请试试这个

代码语言:javascript
复制
<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,希望能对您有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59427336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档