android:lineSpacingMultiplier 不适用于 android:textAppearance
android:lineSpacingMultiplier doesn't work in android:textAppearance
我试图在我的 textAppearance 样式 (android:textAppearance
) 中添加 android:lineSpacingMultiplier
,但它不起作用。我做错了什么吗?
文本外观样式:
<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"
/>
出于某种原因,android:lineSpacingMultiplier
无法作为您的 textAppearance
中的项目使用。您要么必须将其直接设置为 TextView
属性(使用 android:lineSpacingMultiplier
),要么创建一个 "wraps" 设置 textAppearance
和 lineSpacingMultiplier
的常规样式
创建样式
<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>
然后通过 style
而不是 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"
/>
我能够通过简单地将 style
应用于 TextView
本身而不是 textAppearance
来解决问题(类似于接受的答案,但代码少了一点).
这是一个示例:
风格:
<style name="TextBody1" parent="TextAppearance.AppCompat.Body1">
<item name="android:lineSpacingMultiplier">1.25</item>
</style>
或者如果你不关心 parent 更简单:
<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:textAppearance
应用到具有定义 android:lineSpacingMultiplier
的给定 style
的 TextView
不起作用(我推测这可能是由于事实上,行间距在样式 View
本身而不是 View
的 textAppearance
上,但如果您不关心,这比接受的答案要简单一些parent.
lineSpacingMultiplier
以及 lineSpacingExtra
你只能在风格上申请。
但作为替代方案,您可以使用 lineHeight
属性,该属性可以使用 textAppearance
.
应用于 MaterialTextView
有趣的是,如果您使用完整的 Material 主题(不是 Bridge),您所有的 TextView
将 auto-inflate 到 MaterialTextView
,否则,您将需要在 xml.
中指定 <com.google.android.material.textview
我试图在我的 textAppearance 样式 (android:textAppearance
) 中添加 android:lineSpacingMultiplier
,但它不起作用。我做错了什么吗?
文本外观样式:
<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"
/>
出于某种原因,android:lineSpacingMultiplier
无法作为您的 textAppearance
中的项目使用。您要么必须将其直接设置为 TextView
属性(使用 android:lineSpacingMultiplier
),要么创建一个 "wraps" 设置 textAppearance
和 lineSpacingMultiplier
的常规样式
创建样式
<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>
然后通过 style
而不是 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"
/>
我能够通过简单地将 style
应用于 TextView
本身而不是 textAppearance
来解决问题(类似于接受的答案,但代码少了一点).
这是一个示例:
风格:
<style name="TextBody1" parent="TextAppearance.AppCompat.Body1">
<item name="android:lineSpacingMultiplier">1.25</item>
</style>
或者如果你不关心 parent 更简单:
<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:textAppearance
应用到具有定义 android:lineSpacingMultiplier
的给定 style
的 TextView
不起作用(我推测这可能是由于事实上,行间距在样式 View
本身而不是 View
的 textAppearance
上,但如果您不关心,这比接受的答案要简单一些parent.
lineSpacingMultiplier
以及 lineSpacingExtra
你只能在风格上申请。
但作为替代方案,您可以使用 lineHeight
属性,该属性可以使用 textAppearance
.
MaterialTextView
有趣的是,如果您使用完整的 Material 主题(不是 Bridge),您所有的 TextView
将 auto-inflate 到 MaterialTextView
,否则,您将需要在 xml.
<com.google.android.material.textview