2013-02-20 45 views
25

我创建的是Action Bar导航选项卡,但是当操作栏堆叠时,选项卡不会获得整个宽度空间。我有一张照片来说明它。堆叠的ActionBar选项卡栏不填充父项

enter image description here

是可能的,在这种情况下,给予每个选项卡50%屏幕宽度的?

谢谢

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

enter image description here

+1

Kaixo Jon,我遇到了同样的问题。你有没有得出结论? – mdelolmo 2013-03-11 10:27:06

+0

Ez,抱歉mdelolmo,但我处于相同的情况。这是荒谬的。 – 2013-03-15 11:14:33

+1

你有没有解决这个问题? – 2014-11-20 11:55:44

回答

18

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

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

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

现在我不认为这个价值,也不能修改这个行为,除了可能使用反射。我对此不太了解,所以如果有人能够管理这样的事情,请不要犹豫,因为这确实是一种不好的行为,在某些平板电脑上看起来不太好。

+0

从https://android.googlesource.com/platform/frameworks/base/+/b8139af3dcae80c0030afd0354dc424a7c72c3d9 “堆积动作条翼片现在有一个宽度限制。这防止 超宽标签,可以跨越整个屏幕。翼片 的簇,如果它不跨越整个宽度的中心。 ” – 2015-09-02 17:11:28

+0

它看起来像Android正在从标签切换到Android M中的操作栏。不幸的是,问题仍然存在于旧版本中。 – 2015-09-02 17:17:04

0

Android堆叠的动作条标签没有可调节的宽度。

“堆积动作条翼片现在有一个宽度限制。这防止了可以跨越整个屏幕超宽标签。如果它不跨越整个宽度接片的簇的中心。” https://android.googlesource.com/platform/frameworks/base/+/b8139af3dcae80c0030afd0354dc424a7c72c3d9

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

对于大多数开发人员来说,这不会是一个问题,但TabLayout设置requries至少SDK API级别22,因为程序兼容性依赖关系对22编译然而,TabLayout不会对22的运行时间依赖性,这意味着您可以在API级别7以上的设备上运行它。

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