如何设置 ActionBar 样式,选定选项卡上的选项卡背景

Posted

技术标签:

【中文标题】如何设置 ActionBar 样式,选定选项卡上的选项卡背景【英文标题】:How to Style ActionBar, tab background on selected tab 【发布时间】:2012-10-28 10:33:27 【问题描述】:

我正在努力设计 ActionBar 的样式。我的应用程序有一个带有三个选项卡的 ActionBar。我试图让选定的选项卡具有背景颜色,而未选定的选项卡显示不同的颜色。我正在关注这个参考:Customizing Action Bar。但是所有的 TAB 都显示为 Selected 颜色。

我的styles.xml文件如下:

<style name="MyActionBarTabStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar">
    <item name="android:background">@drawable/tab_background</item>
    <item name="android:paddingLeft">32dp</item>
    <item name="android:paddingRight">32dp</item>
</style> 

<style name="MyActionBarTabBarStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar">

    <item name="android:background">@drawable/red</item>
</style> 


<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar.Light</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
    <item name="android:actionBarTabBarStyle">@style/MyActionBarTabBarStyle</item>

</style>

tab_background 只是一个 9 补丁。我也不确定我是否从正确的父级 (parent="android:style/Widget.Holo.Light.ActionBar.TabBar) 继承了操作栏选项卡。我查看了参考资料,发现很难理解样式层次结构

为什么我的标签不显示选中或不显示?提前感谢您的帮助。

【问题讨论】:

使用ActionBarSherlockStyleGenerator 设置样式并使用。检查我的答案here 谢谢普拉文。 ActionBarStyleGenerator 对设置 ActionBar 的样式非常有用 【参考方案1】:

我解决了我的问题。我最初没有使用 State List Drawables。我直接使用了背景图像,而不是通过 StateListDrawable。使用StateListDrawable,可以根据标签是否被选中设置不同的背景。

所以我添加了文件tab_background_select.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/tab_background" />

</selector>

我从我的styles.xml 引用了这个:

 <item name="android:background">@drawable/tab_background_select</item>

【讨论】:

从styles.xml 引用这个是什么意思?你是如何引用它的,以什么方式引用它?我怎么做?我无法让它工作。对此没有任何作用,无论我做什么,它都不会改变。安卓似乎真的有问题。你参考了哪位家长?你给它起什么名字?您在清单中引用了什么? 不错的答案 :) 像这样使用,&lt;style name="MyActionBarTabStyle" parent="@android:style/Widget.Holo.Light.ActionBar.TabBar"&gt; &lt;item name="android:background"&gt;@drawable/tab_background_select&lt;/item&gt; &lt;/style&gt;

以上是关于如何设置 ActionBar 样式,选定选项卡上的选项卡背景的主要内容,如果未能解决你的问题,请参考以下文章

如何在引导选项卡上编辑(更改颜色和边框像素)?

根据选定的选项卡在 ActionBar 中显示和隐藏项目

节编号。请使用“开始”选项卡上的“多级列表”按钮,然后选择链接到标题样式的编号方案(无法添加题注)

Flutter - 选项卡上的动态高度

为 woocommerce 产品选项卡上的自定义字段设置优先级

如何从 appdelegate 访问 uitablviews 选定项目?