Android TabLayout没有布局适用于所有设备

时间:2017-02-02 14:56:50

标签: android android-tablayout

我正在使用TabLayout,无论我选择哪种布局选项,它都会在某处看起来很糟糕。这是我尝试过的,结果如下:

  

重心,模式可滚动:如果空间太大   在屏幕上水平放置,标签栏不会填充宽度

     

重力中心,模式固定:如果没有足够的空间,则为文本   换行(除非它是一个单词的最后一个字母,否则会好的。   看起来很荒谬。

     

重力填充,模式修复:如果空间不够,文本换行

文档说填充/可滚动是无效的,这是不幸的,因为它似乎正是我需要的 - 填充所有可用空间,如果没有足够的话滚动。无论如何我试过了,但它并没有填补。

我尝试使用所有这些组合将tabMaxWidth设置为0dp,但它似乎没有任何效果。我已经尝试了各种解决方案,我在这里找到了styles.xml或代码中的事情,没有成功。难道没有办法让这个东西在所有屏幕上都能表现出来吗?我是否需要计算屏幕宽度并在运行时调整布局(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宽度设置为wrap_content而不是match_parent,但这也没有用。仍在寻找解决方案。

编辑:以下是该行为的屏幕截图。

Tabs are not taking up the full width

Text is wrapping

如果我可以将标签布局后面的白色变成灰色,那可能就足够了,但我认为它是活动/应用程序背景颜色,我不想将其更改为灰色。

以下是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

0 个答案:

没有答案