ActionBarSHerlock选项卡和菜单项:自定义

时间:2013-01-02 09:01:34

标签: android actionbarsherlock

我有一些关于如何自定义标签和菜单项的问题 - 如何在徽标和标签之间设置边距(两者都在一行中)以及如何在只有图标的菜单项之间放置垂直分隔符? (当你将菜单项作为文本或图标+文本呈现时,有垂直分隔符,但仅在图标的情况下不存在)关于菜单项分隔符的另一件事是如何在每个图标之前放置此分隔符?

我已经看过所有actionbarsherlock示例,其中有很多样式,并检查有关它的其他资源,但我没有找到如何自定义这些东西。

1 个答案:

答案 0 :(得分:0)

标签与徽标之间的保证金

除非您使用自定义选项卡实现创建自定义视图,否则我只能通过一种方法在选项卡和徽标之间创建空格(假设标题已隐藏)设置标签栏的左侧填充。为此,您的主题必须包含:

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <item name="actionBarTabBarStyle">@style/MyTabBarStyle</item>
    <item name="android:actionBarTabBarStyle">@style/MyTabBarStyle</item>
</style>

MyTabBarStyle必须包含:

<style name="MyTabBarStyle" parent="Widget.Sherlock.ActionBar.TabBar">
    <item name="android:paddingLeft">@dimen/my_left_padding</item>
</style>

请注意,您必须将此版本的MyTabBarStyle设置在适当的位置,以便仅在选项卡放置在主操作栏中时显示(通常在横向方向配置中发生),因此您应该放置它在res/values-land/styles.xml

菜单项的分隔线

您提到的正确,当菜单项显示为图标时创建分隔符是一个问题。您仍然可以使用小技巧来执行此操作 - 将分隔符编码为操作按钮背景。如果您使用这样的9-patch drawable(缩放以获得更好的可见性):

enter image description here

然后会创建一个绿色分隔线(当然你也应该为其他状态创建版本)。

要设置背景,您必须在主题中定义android:actionButtonStyle

<style name="MyTheme" parent="@style/Theme.Sherlock">
    <item name="actionButtonStyle">@style/MyActionButtonStyle</item>
    <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
</style>

风格必须定义背景:

<style name="MyActionButtonStyle" parent="@style/Widget.Sherlock.ActionButton">
    <item name="android:background">@drawable/my_actionbutton_bg</item>
</style>

使用此解决方案,您可以在每个项目之前放置分隔符。请注意,如果显示溢出图标,您应该为android:actionOverflowButtonStyle定义类似的背景。

问题的另一个解决方案可能是为菜单项定义android:actionLayout。在那里,您可以为每个菜单项定义自定义布局。