我正在尝试在我的项目中使用新的Design TabLayout。我希望该布局适应每个屏幕大小和方向,但只能在一个方向上正确显示。
我正在处理将Gravity和Mode设置为我的tabLayout:
tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
因此,我期望如果没有空间,tabLayout 可以滚动,但如果有空间,则居中显示。
从指南中可以看到:
public static final int GRAVITY_CENTER 表示在 TabLayout 中居中布局选项卡的重力。
public static final int GRAVITY_FILL 表示尽可能填充 TabLayout 的重力。仅在 MODE_FIXED 模式下使用此选项有效。
public static final int MODE_FIXED 固定标签同时显示所有选项卡,并且最适合用于需要快速在选项卡之间进行切换的内容。选项卡的最大数量受视图宽度限制。 固定选项卡的宽度相等,基于最宽的选项卡标签。
public static final int MODE_SCROLLABLE 可滚动选项卡在任何给定时刻只显示一部分选项卡,并且可以包含更长的选项卡标签和更多选项卡。当用户不需要直接比较选项卡标签时,在触摸界面中浏览上下文时最好使用它们。
因此 GRAVITY_FILL 仅与 MODE_FIXED 兼容,但是由于没有指定 GRAVITY_CENTER 的情况下,我期望它与 MODE_SCROLLABLE 兼容,但是这是我在使用 GRAVITY_CENTER 和 MODE_SCROLLABLE 时看到的结果:
因此,在两个方向上都使用了 SCROLLABLE,但未使用 GRAVITY_CENTER。
这是我期望的横向布局;但是要实现这一点,我需要设置 MODE_FIXED,因此在纵向布局中得到以下结果:
如果 TabLayout 可以适应屏幕大小,为什么 GRAVITY_CENTER 不起作用?有没有办法动态设置重力和模式(并查看我期望的效果)?
非常感谢!
编辑:这是我的 TabLayout 布局:
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:background="@color/orange_pager"
android:layout_height="wrap_content" />