如何设置 Android 的 AppBar 操作文本的样式?
How to style Android's AppBar action text?
我需要更改 AppBar/Toolbar 中操作按钮的文字大小。它应该是 14sp,但在这个例子中我将使用 20sp,因为它更明显。我正在使用 appcompat-v7 22.1.1
起初我尝试使用主题属性android:actionButtonStyle
:
<style name="FirstAttemptTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionButtonStyle">@style/Custom.Widget.AppCompat.Light.ActionButton</item>
</style>
<style name="Custom.Widget.AppCompat.Light.ActionButton" parent="Widget.AppCompat.Light.ActionButton">
<item name="android:textSize">20sp</item>
</style>
然后我运行在Lollipop上申请,结果如愿以偿:
但是后来我用了低版本的模拟器,我的主题没有效果:
我深入挖掘,发现 abc_action_menu_item_layout.xml
用于操作菜单项,它有一行 android:textAppearance="?attr/actionMenuTextAppearance"
所以我尝试修改这个主题属性(我也不得不添加textStyle:bold
):
<style name="SecondAttemptTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionMenuTextAppearance">@style/Custom.TextAppearance.AppCompat.Widget.ActionBar.Menu</item>
</style>
<style name="Custom.TextAppearance.AppCompat.Widget.ActionBar.Menu" parent="TextAppearance.AppCompat.Widget.ActionBar.Menu">
<item name="android:textSize">20sp</item>
<item name="android:textStyle">bold</item>
</style>
和第一次一样,Lollipop上的结果是需要的,对下面的任何版本都没有影响。
所以,问题是:如何正确更改操作菜单项的文本大小?
PS:我在 github 上创建了一个简单的项目来演示我的问题
看来 actionButtonStyle
和 actionMenuTextAppearance
应该在没有 android:
命名空间的情况下使用。
从支持库的 values-v21/values.xml 中可以看出,Lollipop 使用系统主题中的属性(注意 android:
前缀),这就是我尝试使用它的原因:
<style name="Base.V21.Theme.AppCompat.Light" parent="Base.V7.Theme.AppCompat.Light">
...
<item name="actionButtonStyle">?android:attr/actionButtonStyle</item>
...
</style>
我需要更改 AppBar/Toolbar 中操作按钮的文字大小。它应该是 14sp,但在这个例子中我将使用 20sp,因为它更明显。我正在使用 appcompat-v7 22.1.1
起初我尝试使用主题属性android:actionButtonStyle
:
<style name="FirstAttemptTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionButtonStyle">@style/Custom.Widget.AppCompat.Light.ActionButton</item>
</style>
<style name="Custom.Widget.AppCompat.Light.ActionButton" parent="Widget.AppCompat.Light.ActionButton">
<item name="android:textSize">20sp</item>
</style>
然后我运行在Lollipop上申请,结果如愿以偿:
但是后来我用了低版本的模拟器,我的主题没有效果:
我深入挖掘,发现 abc_action_menu_item_layout.xml
用于操作菜单项,它有一行 android:textAppearance="?attr/actionMenuTextAppearance"
所以我尝试修改这个主题属性(我也不得不添加textStyle:bold
):
<style name="SecondAttemptTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionMenuTextAppearance">@style/Custom.TextAppearance.AppCompat.Widget.ActionBar.Menu</item>
</style>
<style name="Custom.TextAppearance.AppCompat.Widget.ActionBar.Menu" parent="TextAppearance.AppCompat.Widget.ActionBar.Menu">
<item name="android:textSize">20sp</item>
<item name="android:textStyle">bold</item>
</style>
和第一次一样,Lollipop上的结果是需要的,对下面的任何版本都没有影响。
所以,问题是:如何正确更改操作菜单项的文本大小?
PS:我在 github 上创建了一个简单的项目来演示我的问题
看来 actionButtonStyle
和 actionMenuTextAppearance
应该在没有 android:
命名空间的情况下使用。
从支持库的 values-v21/values.xml 中可以看出,Lollipop 使用系统主题中的属性(注意 android:
前缀),这就是我尝试使用它的原因:
<style name="Base.V21.Theme.AppCompat.Light" parent="Base.V7.Theme.AppCompat.Light">
...
<item name="actionButtonStyle">?android:attr/actionButtonStyle</item>
...
</style>