我目前正在申请中使用TabLayout。
我设置了GRAVITY_FILL
和MODE_FIXED
,但这并没有达到我想要的效果。
我一直有 3个选项卡。左侧和右侧选项卡标题仅显示一个小图标,而中间选项卡显示长文本。
这就是我想要的:
[________ TOTAL WIDTH __________]
[图标] [非常长的标题页] [Icon2]
这就是它的样子:
[__________________________总宽度__________________________]
[_________ Icon ________] [一个非常长的标题页] [_________ Icon2 ________]
因此,您可以从我糟糕的插图中看到,我希望中间选项卡占据大约70%的空间,并将其余部分用图标分配给2个选项卡。
现在我已经做了一些研究,人们建议我扩展一些布局类,但我无法让它工作。
有人可以如此友好地告诉我这是否可能以及我将如何实现它。
答案 0 :(得分:1)
这是您问题的唯一解决方案
int padding_in_dp = 2; // 6 dps
final float scale = getResources().getDisplayMetrics().density;
int padding_in_px = (int) (padding_in_dp * scale + 0.5f);
for (int i = 0; i < 3; i++) {
TabLayout.Tab tab = mTabLayout.newTab();
mTabLayout.addTab(tab);
LinearLayout layout = ((LinearLayout) ((LinearLayout) mTabLayout.getChildAt(0)).getChildAt(i));
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) layout.getLayoutParams();
layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
layout.setLayoutParams(layoutParams);
layout.setPadding(padding_in_px, 0, padding_in_px, 0);
tab.setText(array[i]);
}
一定会帮到你