我正在使用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
,但这也没有用。仍在寻找解决方案。
编辑:以下是该行为的屏幕截图。
如果我可以将标签布局后面的白色变成灰色,那可能就足够了,但我认为它是活动/应用程序背景颜色,我不想将其更改为灰色。
以下是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