不填充母堆积动作条标签栏(Stacked ActionBar tab bar not filling

2019-07-20 05:37发布

我创建操作栏导航选项卡,但在操作栏堆叠标签没有得到整个宽度的空间。 我有一个照片来说明吧。

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

谢谢

我编辑说,这不是一个福尔摩斯操作栏。 我在三星Galaxy Note 10.1和在的Nexus 7正在处理,现在,在Nexus的测试它,我注意到,它的行为是不同的。 另截图:

Answer 1:

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

Android框架采用了一种名为ActionBarPolicy类设置关于动作条的行为的一些规则。 在这个文件(可以在这里找到: https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/view/ActionBarPolicy.java ),你会发现一个名为方法getStackedTabMaxWidth()返回一个扪值(目前在ressources在160dip设置)。

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

现在,我不认为这个值,也没有这种行为可以被修改,可能除了使用反射。 我不知道有足够的了解它这样做,因此,如果有人能管理这样的事情,不要犹豫,这么说,因为这真的是一个坏的行为,并不能在一些平板电脑看起来棒极了。



Answer 2:

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

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

该解决方案是使用TabLayout从Android设计支持库与Android 5.0发布的API。 Android的支持库需要的程序兼容性库,但如果你建立的gradle使用这种依赖是为您解决。

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

TL; R - 从Android设计库使用Tablayout。 需要开发者的API级别22,但最多可以V7旧款手机上运行。



文章来源: Stacked ActionBar tab bar not filling parent