6

我正在尝试添加android:lineSpacingMultiplier我的 textAppearance 样式 ( android:textAppearance),但它不起作用。难道我做错了什么?

文字外观风格:

<style name="TextAppearance.Body1" parent="TextAppearance.AppCompat.Body1">
      <item name="android:lineSpacingMultiplier">1.25</item>
</style> 

风格使用:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="This is body 1\nThis is body 1"
    android:textAppearance="TextAppearance.Body1"
    />
4

3 回答 3

9

无论出于何种原因android:lineSpacingMultiplier,它都不能作为您的textAppearance. 您要么必须将其直接设置为TextView属性(使用android:lineSpacingMultiplier),要么创建一个常规样式来“包装”设置textAppearancelineSpacingMultiplier

创建风格

<style name="TextBody1">
    <item name="android:textAppearance">@style/TextAppearance.AppCompat.Body1</item>
    <item name="android:lineSpacingMultiplier">1.25</item>
</style>

或者

<style name="TextBody1" parent="TextAppearance.AppCompat.Body1">
    <item name="android:lineSpacingMultiplier">1.25</item>
</style>

然后申请 viastyle而不是android:textAppearance

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="This is body 1\nThis is body 1"
    style="@style/TextBody1"
    />
于 2017-02-13T22:20:18.393 回答
1

lineSpacingMultiplier以及lineSpacingExtra您只能以样式申请。

但作为替代方案,您可以使用lineHeight属性,该属性可以应用于MaterialTextViewusing textAppearance

有趣的是,如果您使用完全 Material 主题(而不是 Bridge),您的所有主题都TextView将自动膨胀为MaterialTextView,否则,您需要<com.google.android.material.textview在 xml.xml 中指定。

于 2020-10-18T14:39:26.230 回答
0

我能够通过简单地将其style应用于TextView自身而不是textAppearance(类似于接受的答案,但代码少一点)来解决这个问题。

这是一个示例:

风格:

<style name="TextBody1" parent="TextAppearance.AppCompat.Body1">
  <item name="android:lineSpacingMultiplier">1.25</item>
</style> 

如果您不关心父母,或者更简单:

<style name="TextBody1">
      <item name="android:lineSpacingMultiplier">1.25</item>
</style> 

然后在您的视图中:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="This is body 1\nThis is body 1"
    style="@style/TextBody1"
    />

我不确定为什么将给定的定义应用于android:textAppearancea不起作用(我推测这可能是因为行距在样式本身而不是在的)但这比如果您不关心父母,则可以接受的答案。TextViewstyleandroid:lineSpacingMultiplierViewtextAppearanceView

于 2018-05-03T15:19:52.997 回答