ActionBar选项卡栏未填满父容器

25

我正在创建操作栏导航选项卡,但是当操作栏被堆叠时,选项卡没有获取整个宽度空间。我有一张照片来说明这一点。

图片描述

在这种情况下,每个选项卡都可以占用屏幕宽度的50%吗?

谢谢

我编辑后说这不是Sherlock操作栏。 我在三星Galaxy Note 10.1和Nexus 7上工作。 现在,在Nexus上测试它,我注意到它的行为是不同的。 另一张截图:

图片描述


1
Kaixo Jon,我遇到了同样的问题。你得出结论了吗? - mdelolmo
1
你解决这个问题了吗? - Ashish Tamrakar
如果不用画布,我认为两个文本框也可以工作。你只需要使用两个文本框并给它们一半的空间,然后通过文本对齐和自定义布局,你可以按照你的意愿绘制它们 :) 对于机器人方面,最好的想法是使用片段。 - Pier Giorgio Misley
@EricS. 你是否正在使用来自设计支持库的 TabLayout - Vikram
@EricS。设计支持库适用于API级别7及以上:链接。我仍然没有回答你的问题,但如果你能确认你选择的工具,我愿意去看看。 - Vikram
显示剩余7条评论
2个回答

18

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

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的私有实现。

现在我认为除了使用反射之外,这个值和这个行为都无法被修改。我对此了解不多,所以如果有人能够管理这样的事情,请不要犹豫告诉我,因为这确实是一个糟糕的行为,在一些平板电脑上看起来并不好看。


堆叠式操作栏选项卡现在有宽度限制。这可以防止超宽的选项卡跨越整个屏幕。如果选项卡群组没有跨越整个宽度,则会居中显示。 - Eric S.
看起来 Android 在 Android M 中摆脱了将选项卡附加到操作栏的做法。不幸的是,在旧版本中问题仍然存在。 - Eric S.

0

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的设备上运行它。
简而言之 - 使用Android Design Library中的Tablayout。开发者需要API级别22,但可以在旧手机上运行,最低支持到v7。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接