这个主题很好用,为ActionBar标签的3个部分引用了三种自定义样式。
但是“dividerPadding”对它们中的任何一个都没有影响 - 在API 17设备上运行。
<style name="Theme.AppEmptyTitleBar" parent="android:style/Theme.Holo">
<item name="android:actionBarStyle">@style/AB</item>
<item name="android:actionBarTabStyle">@style/ABT</item>
<item name="android:actionBarTabBarStyle">@style/ABTB</item>
</style>
<style name="AB" parent="android:style/Widget.Holo.ActionBar">
<item name="android:dividerPadding">20dip</item>
</style>
<style name="ABT" parent="android:style/Widget.Holo.Light.ActionBar.TabView">
<item name="android:dividerPadding">20dip</item>
</style>
<style name="ABTB" parent="android:style/Widget.Holo.ActionBar.TabBar">
<item name="android:dividerPadding">20dip</item>
</style>
答案 0 :(得分:3)
首先,dividerPadding
属性(据我所知)仅适用于*ActionBar.TabBar
样式。
我使用一个非常基本的应用程序测试了你的风格,使用了原生ActionBar
和一个提供API 17的设备。我已将dividerPadding
属性设置为不同的值,剩下的就是具有默认值的属性。结果如下:
dividerPadding="0dip"
:
dividerPadding="15dip"
:
dividerPadding="20dip"
:
正如您所看到的,分隔符在最后一张图像上消失了。所以我的第一个建议是检查你是否看到它。除此之外,dividerPadding
似乎按预期工作。
我的第二个建议来自Android平台处理放置在不同values-*
目录中的样式资源的方式。我的预感是您可能正在使用默认values
目录中的操作栏样式。如果您碰巧在兼容的values-*
目录中提供了这些样式的覆盖(例如values-vX
X <= 17
),则values
的样式将被忽略。例如,请考虑您已将这些样本样式放在values/styles.xml
文件中:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="@android:style/Theme.Holo">
<item name="android:actionBarTabBarStyle">@style/ABTB</item>
</style>
<style name="ABTB" parent="@android:style/Widget.Holo.ActionBar.TabBar">
<item name="android:dividerPadding">0dip</item>
</style>
</resources>
然后,如果您将此样式定义放在values-v17/styles.xml
:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="@android:style/Theme.Holo">
</style>
</resources>
它将覆盖AppTheme
样式,有效地“重置”(技术上:忽略)整个actionBarTabBarStyle
样式(包括dividerPadding
属性值)。实际上,您将看不到对ABTB
样式所做的任何更改。
修改强>
是的,我以为你知道,抱歉:( dividerPadding
值仅适用于:
TabWidget
(它是标签标签的容器)水平绘制标签时,分隔符的顶部和底部。TabWidget
垂直绘制标签时,分隔线的左右两侧。这正是您在屏幕截图中看到的内容。据我所知,你必须将divider
设置为drawable,这将强制额外填充。我相信layer
drawable对于这个目的很有用,因为你可以为每一层明确设置填充。