Stacked ActionBar标签栏未填充父级

时间:2013-02-20 11:58:33

标签: android android-actionbar

我正在创建操作栏导航选项卡,但是当操作栏堆叠时,选项卡不会获得整个宽度空间。我有一个照片来说明它。

enter image description here

在这种情况下,是否可以为每个标签提供50%的屏幕宽度?

谢谢

我正在编辑说它不是Sherlock Action Bar。我正在三星Galaxy Note 10.1和Nexus 7中工作。现在,在Nexus上测试它,我注意到它的行为是不同的。另一个截图:

enter image description here

2 个答案:

答案 0 :(得分:18)

我认为目前不可行。过去几天我一直在努力做同样的事情,这是我迄今为止所发现的。

Android框架使用一个名为ActionBarPolicy的类来设置有关ActionBar行为的一些规则。 在这个文件中(可以在这里找到:https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/view/ActionBarPolicy.java),你会找到一个名为getStackedTabMaxWidth()的方法,它返回一个维数值(目前在160dip的资源中设置)。

此值用于放置在ScrollingTabContainerView(https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/ScrollingTabContainerView.java)中的内部类TabView。 TabView是ActionBar的TabBar的私有实现。

现在我不认为可以修改此值或此行为,除非使用Reflection。我不太了解它,所以如果有人可以管理这样的事情,请不要犹豫,因为这真的是一种不好的行为,在某些平板电脑上看起来不太好。

答案 1 :(得分:0)

Android堆叠操作栏标签的宽度不可调。

  

“堆叠的操作栏标签现在具有宽度限制。这可以防止超宽标签覆盖整个屏幕。如果标签不跨越整个宽度,则标签集群居中。”https://android.googlesource.com/platform/frameworks/base/+/b8139af3dcae80c0030afd0354dc424a7c72c3d9

解决方案是使用Android 5.0发布的Android设计支持库中的 TabLayout API。 Android支持库需要appcompat库,但如果使用gradle构建,则会解决该依赖关系。

对于大多数开发人员来说,这不是问题,但TabLayout设置至少需要SDK API级别22,因为appcompat依赖项是针对22编译的。但是, TabLayout 没有运行时依赖于22,这意味着您可以在API级别为7的设备上运行它。

tl; r - 使用Android设计库中的Tablayout。开发人员需要API级别22,但可以在较旧的手机上运行至v7。