15

我正在尝试自定义 ActionBar 上的选项卡。我只想将标签与手机屏幕对齐,并使其可伸缩以适应各种屏幕。但我得到的只是:

在此处输入图像描述

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

<?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>

是否有可能只是减少字体并摆脱那些蓝线?

提前感谢您的帮助。

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

4

7 回答 7

13

编辑:ActionBarCompat在支持库中使用。


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

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

  2. 使用 ActionBarSherlock,为您的 ActionBar 设置样式很容易!我可以详细介绍如何执行此操作,但是该库已经附带了许多示例代码,这些示例代码说明了您在上面描述的内容。

安装/使用该库非常简单,几乎与使用ActionBarAndroid SDK 中提供的普通库相同(大多数情况下只是调用getSupportActionBar()而不是getActionBar())。如果您有任何问题,请告诉我。

ps 另请注意,它ActionBarSherlock提供了 ViewPagerExtensions 库提供的所有功能等等。我肯定会推荐使用前者而不是后者。

于 2012-05-03T19:33:27.370 回答
7

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

于 2012-05-03T08:40:19.743 回答
4

我发现使用选项卡的样式指南对于蜂窝非常不一致,只需为您想要的自定义视图充气要容易得多。

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

这对我来说要简单得多,

于 2012-04-30T15:56:31.770 回答
4

改成:

<style name="MyActionBarTabTextStyle" parent="@android:style/Widget.Holo.ActionBar.TabText">
     <item name="android:textSize">14dip</item>
     <item name="android:padding">0dip</item>
</style>
于 2012-10-13T03:54:13.860 回答
1

我认为您继承了错误的样式,请尝试:

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

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

于 2012-04-30T21:13:50.187 回答
1

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

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

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

于 2012-05-03T15:03:43.467 回答
0

您可以使用setCustomView方法。

于 2013-09-11T06:14:03.490 回答