在Android 4上自定义ActionBar选项卡

我正在尝试在ActionBar上自定义Tabs。 我只想将标签与电话屏幕对齐,使其可以伸展各种屏幕。 但我得到的只是:

在此处输入图像描述

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

   @style/MyActionBarTabTextStyle   14dip 0dip   

是否可以减少字体并摆脱那些蓝线?

提前感谢您的帮助。

PS:按钮也很奇怪。 没有文字(虽然它应该是)……

编辑:在支持库中使用ActionBarCompat


我建议你使用Jake Wharton的ActionBarSherlock有两个原因:

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

  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); 

这对我来说简单得多,

改成:

  

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

  

编辑:另外,请确保使用sp代替dip来获取字体大小(14sp)

我强烈建议您使用ViewPagerExtensions库 ,它为您提供5种不同的样式选项卡,您还必须填写纵向和横向标签,每个屏幕尺寸的ode已在此库中解决。

顺便说一句,如果您查看库的代码,您可以轻松地自己设置主题。

此外,如果您在使用片段页面实现此操作时遇到问题,请查看actionbarsherlock-tabs-multi-fragments

您可以使用setCustomView方法。