Android TabLayout无布局在所有设备上都有效

Android TabLayout无布局在所有设备上都有效,android,android-tablayout,Android,Android Tablayout,我使用的是表格布局,无论我选择什么布局选项,它在某个地方看起来都很糟糕。以下是我的尝试和结果: 重心,模式可滚动:如果空间过大 在屏幕上水平显示时,选项卡栏不会填充宽度 重心,模式固定:如果没有足够的空间,文本 包装(如果不是一个单词的最后一个字母就可以了)。 看起来很可笑 重力填充,固定模式:如果空间不足,文本换行 文档说明fill/scrollable无效,这很不幸,因为它似乎正是我所需要的-填充所有可用空间,如果空间不足,则滚动。我还是尝试了,但没有填充 我尝试过用所有这些组合将tabMa

我使用的是表格布局,无论我选择什么布局选项,它在某个地方看起来都很糟糕。以下是我的尝试和结果:

重心,模式可滚动:如果空间过大 在屏幕上水平显示时,选项卡栏不会填充宽度

重心,模式固定:如果没有足够的空间,文本 包装(如果不是一个单词的最后一个字母就可以了)。 看起来很可笑

重力填充,固定模式:如果空间不足,文本换行

文档说明fill/scrollable无效,这很不幸,因为它似乎正是我所需要的-填充所有可用空间,如果空间不足,则滚动。我还是尝试了,但没有填充

我尝试过用所有这些组合将
tabMaxWidth
设置为0dp,但似乎没有任何效果。我尝试过在
style.xml
或code中进行操作的各种解决方案,但都没有成功。难道没有办法让这件事在所有屏幕上都表现出来吗?我需要计算s吗在运行时调整屏幕宽度和布局(barf)

更新:我决定尝试测量和调整。代码如下:

tabLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {


        tabLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        final int tabWidth = tabLayout.getWidth();

        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        int screenWidth = displaymetrics.widthPixels;

        if(screenWidth > tabWidth){
            // The tabs won't fill the horizontal space.  Switch to fixed mode instead of scrollable.
            tabLayout.setTabMode(TabLayout.MODE_FIXED);
        }
    }
});
出现的情况是屏幕宽度和选项卡布局宽度相同。因此,这种技术无法帮助我区分空间是否不足或过多。我尝试将TabLayout width设置为
wrap\u content
,而不是
match\u parent
,但这也不起作用。仍在寻找解决方案

编辑:以下是行为的截图

如果我能将选项卡布局后面的白色变成灰色,那可能就足够了,但我认为这是活动/应用程序的背景色,我不想将其改为灰色

以下是XML中的背景设置:
app:tabBackground=“@drawable/tab_selector”

这导致:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/tab_background" android:state_selected="true"/>
    <item android:drawable="@color/tab_background"/>
</selector>


tab_background
#a2a2a3

屏幕截图在哪里?@MarcinOrlowski添加了屏幕截图。我不知道这是否重要,但文本包装的设备运行的是Android 5,另一个在7。使用可滚动并将表格布局设置为与您想要的背景颜色匹配。这是最好的解决方案屏幕,并在我见过的任何应用程序中使用超过1或2个tabs@nasch在tabLayout视图本身中。例如:@mobilepotato7做到了!或者至少是“足够好”解决方案。这些标签仍然没有填满空间,但在我的情况下,它并不是很明显。谢谢。希望有人能发布一个更通用的解决方案,因为这个解决方案可能不适合所有人。