在Android 4上自定义ActionBar选项卡

我试图在我的ActionBar上自定义选项卡。 我只想将选项卡alignment到手机屏幕,并使其可以在各种屏幕上拉伸。 但我得到的是这样的:

在这里输入图像说明

我用于主题的代码是这样的:

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarTabTextStyle">@style/MyActionBarTabTextStyle</item> </style> <style name="MyActionBarTabTextStyle" parent="@android:style/Widget.Holo.Light.Tab"> <item name="android:textSize">14dip</item> <item name="android:padding">0dip</item> </style> </resources> 

是否有可能只是减less字体,摆脱这些蓝线?

提前感谢您的帮助。

PS:这个button也很奇怪。 没有文字(虽然应该是)…

Solutions Collecting From Web of "在Android 4上自定义ActionBar选项卡"

编辑:在支持库中使用ActionBarCompat


我build议你使用杰克·沃顿的ActionBarSherlock有两个原因:

  1. ActionBarSherlock是兼容性库的扩展,有助于在所有Android版本中使用操作栏。 这意味着在HoneyComb版本的Android上运行应用程序的用户也可以使用ActionBar进行导航。 这对于用户来说都是可取的(因为ActionBar非常棒!),对于你来说(因为你不必担心根据ActionBar是否可用而分开你的应用程序的控制stream程,例如,没有与HoneyComb兼容的ActionBar ,您可能不必担心为单个屏幕创build多个Activity …一个针对与ActionBar一起使用而优化的操作,以及一个可以在HoneyComb前设备上运行的操作。

  2. 使用ActionBarSherlock,您的ActionBar的样式很容易! 我可以详细介绍如何去做,但图书馆已经有很多示例代码 ,说明了如何描述上面的内容。

安装/使用这个库非常容易,和使用Android SDK中提供的普通ActionBar几乎是一样的(大部分只是调用getSupportActionBar()而不是getActionBar() )。 如果您有任何问题,请告诉我。

ps还要注意, ActionBarSherlock提供了ViewPagerExtensions库提供的所有function以及更多function。 我肯定会推荐使用前者。

有一个全新的工具来为动作条生成正确的9patch图像: http ://jgilfelt.github.com/android-actionbarstylegenerator/

我发现使用标签的风格指南非常不一致的蜂窝,只是膨胀自定义视图,要你想要更容易。

 Fragment serivceFrag = new ServicesFragment(); Tab serviceTab = bar.newTab(); TextViewPlus serviceTabTextView =(TextViewPlus)getLayoutInflater().inflate(R.layout.tab_item_layout, null); serviceTabTextView.setText(servicesLabel); serviceTab.setCustomView(serviceTabTextView); serviceTab.setTabListener(new TabListenerFragment(serivceFrag,"Service",R.id.MainInfoPaneFragment)); bar.addTab(serviceTab); 

这对我来说简单得多,

改成:

 <style name="MyActionBarTabTextStyle" parent="@android:style/Widget.Holo.ActionBar.TabText"> <item name="android:textSize">14dip</item> <item name="android:padding">0dip</item> </style> 

我认为你是从错误的风格inheritance,请尝试:

 <style name="MyActionBarTabTextStyle" parent="android:TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textSize">14sp</item> <item name="android:padding">0dip</item> </style> 

编辑:另外,请确保您使用sp而不是倾angular字体大小(14sp)

我强烈build议你使用ViewPagerExtensions库 ,它给你5种不同风格的标签供你select,还有你需要填写纵向和横向标签的问题,每个屏幕尺寸的标签已经在这个库中解决了。

顺便说一句,如果你看图书馆的代码,你可以轻松地自己主题。

另外,如果在使用片段页面时遇到问题,请查看actionbarsherlock-tabs-multi-fragments

您可以使用setCustomView方法。