我正在创建操作栏导航选项卡,但是当操作栏被堆叠时,选项卡没有获取整个宽度空间。我有一张照片来说明这一点。
在这种情况下,每个选项卡都可以占用屏幕宽度的50%吗?
谢谢
我编辑后说这不是Sherlock操作栏。 我在三星Galaxy Note 10.1和Nexus 7上工作。 现在,在Nexus上测试它,我注意到它的行为是不同的。 另一张截图:
我正在创建操作栏导航选项卡,但是当操作栏被堆叠时,选项卡没有获取整个宽度空间。我有一张照片来说明这一点。
在这种情况下,每个选项卡都可以占用屏幕宽度的50%吗?
谢谢
我编辑后说这不是Sherlock操作栏。 我在三星Galaxy Note 10.1和Nexus 7上工作。 现在,在Nexus上测试它,我注意到它的行为是不同的。 另一张截图:
目前我认为这是不可行的。我过去几天一直在尝试做同样的事情,这是我迄今为止所发现的。
Android框架使用一个名为ActionBarPolicy的类来设置有关ActionBar行为的某些规则。在该文件中(可以在此处找到:https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/view/ActionBarPolicy.java),您将找到一个名为getStackedTabMaxWidth()的方法,该方法返回一个dimen值(当前在资源中设置为160dip)。
这个值被用在滚动选项卡容器视图中放置的内部TabView类(https://github.com/android/platform_frameworks_base/blob/master/core/java/com/android/internal/widget/ScrollingTabContainerView.java)。TabView是ActionBar TabBar的私有实现。
现在我认为除了使用反射之外,这个值和这个行为都无法被修改。我对此了解不多,所以如果有人能够管理这样的事情,请不要犹豫告诉我,因为这确实是一个糟糕的行为,在一些平板电脑上看起来并不好看。
Android堆叠式操作栏选项卡没有可调整的宽度。
“现在,堆叠式操作栏选项卡有一个宽度限制。这可以防止超宽的选项卡跨越整个屏幕。如果选项卡群组没有跨越整个宽度,则会居中显示。” https://android.googlesource.com/platform/frameworks/base/+/b8139af3dcae80c0030afd0354dc424a7c72c3d9
解决方案是使用Android 5.0发布的Android Design Support Library中的TabLayout API。 Android支持库需要appcompat库,但如果您使用gradle构建,则该依赖关系将为您解决。
对于大多数开发者来说,这不是问题,但是TabLayout的设置至少需要SDK API级别22,因为appcompat依赖项是针对22编译的。然而,TabLayout在运行时并不依赖于22,这意味着您可以在API级别7的设备上运行它。
TabLayout
? - Vikram