25

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

在此处输入图像描述

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

谢谢

我正在编辑说它不是 Sherlock 动作栏。我正在使用三星 Galaxy Note 10.1 和 Nexus 7。现在,在 Nexus 中对其进行测试,我注意到它的行为有所不同。另一个截图:

在此处输入图像描述

4

2 回答 2

18

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

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

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

现在我认为这个值和这个行为都不能被修改,除非可能使用反射。我对此知之甚少,所以如果有人能做到这一点,请不要犹豫,这样说,因为这确实是一种不好的行为,在某些平板电脑上看起来并不好。

于 2013-03-17T19:46:56.203 回答
0

Android 堆叠的操作栏标签没有可调整的宽度。

“堆叠的操作栏选项卡现在有宽度限制。这可以防止可以跨越整个屏幕的超宽选项卡。如果选项卡集群不跨越整个宽度,则它会居中。” https://android.googlesource.com/平台/框架/基础/+/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 的旧手机上运行。

于 2015-09-18T17:26:11.393 回答