android - 如何管理 ActionBar 导航选项卡的宽度?

标签 android android-actionbar actionbarsherlock

我正在使用 ActionBarSherlock 并有一个带有导航选项卡的 ActionBar。我希望选项卡根据其中文本的大小自动调整大小,但似乎某处的样式或设置迫使它们使用最小大小。因此,例如在屏幕截图中,选项卡“非常长的选项卡”没有填充(根据我应用的样式),但标记为“T”的选项卡有很多填充,尽管我将填充设置为 0dp。

enter image description here

正如您在下面看到的,我尝试了一种蛮力方法,通过在几种样式上设置各种属性,但我还没有成功。

如何控制操作栏标签的内边距/宽度?

<style
    name="CustomActivity"
    parent="@style/Theme.Sherlock"
    >
    <item name="actionBarTabStyle">@style/customActionBarTabStyle</item>
    <item name="actionBarTabBarStyle">@style/customActionBarTabBarStyle</item>
    <item name="actionBarTabTextStyle">@style/customActionBarTabTextStyle</item>
</style>

<style name="customActionBarTabStyle" parent="style/Widget.Sherlock.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator</item>
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:minWidth">0dp</item>
</style>

<style name="customActionBarTabBarStyle" parent="style/Widget.Sherlock.ActionBar.TabBar">
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:minWidth">0dp</item>
</style>

<style name="customActionBarTabTextStyle" parent="style/Widget.Sherlock.ActionBar.TabText">
    <item name="android:paddingLeft">0dp</item>
    <item name="android:paddingRight">0dp</item>
    <item name="android:layout_width">wrap_content</item>
    <item name="android:minWidth">0dp</item>
</style>

最佳答案

从该屏幕截图看来,您正在 ICS 上进行测试,这很好,因为您将观察 native 操作栏的行为,而不是认为这是 ActionBarSherlock 的错误。

基本上,如果有足够的空间,操作栏会尝试扩展选项卡以占用相等的空间,以便在只有几个选项卡时提供更简洁的外观。

通过将 actionBarTabTextStyle 填充设置为零,实际上会使问题变得更糟,因为现在第一个选项卡中的文本周围没有任何东西可以防止它接触屏幕的分隔线和边缘。如果您增加填充(或将其恢复为默认值),您应该会看到以下两种情况之一:

  1. 文本将换成两行。
  2. 标签栏会将标签转换为与其内容一样宽,并允许水平滚动。

我倾向于认为前者会发生,因为您的第二个到第四个标签的宽度非常薄。不幸的是,这正是标签栏的行为方式,我们需要尝试相应地适应它的行为。

如果可能,请尝试创建宽度更统一的标签标签,这可能会触发上述第二种状态。继续使用 ICS 进行测试,以确保您看到的行为来自平台,然后在预 ICS 上运行时,您应该从库中获得相同的行为。

关于android - 如何管理 ActionBar 导航选项卡的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740199/

相关文章:

java - Firestore,交易已经完成

android - 没有光标的字母索引 ListView

Android ActionBar 标志不显示

android - 将 android 操作栏兼容、寻呼机和选项卡示例与 ActionBarSherlock 进行比较

java - ActionBarSherlock 不再编译

Android:ActionBarSherlock 搜索小部件

java - FragmentTransaction 类型中的方法 add(int, Fragment) 不适用于参数 (int, WeatherFragment)

android - 如何从联系人列表中获取姓名

android - 用于手动实现的 ActionBar 溢出菜单样式信息

android - 使用 fragment 返回堆栈处理 ActionBar 标题?