Android Tablayout:3个标签,让中心标签占用可用宽度的70%

时间:2016-03-02 08:24:03

标签: android android-tablayout

我目前正在申请中使用TabLayout

我设置了GRAVITY_FILLMODE_FIXED,但这并没有达到我想要的效果。 我一直有 3个选项卡。左侧和右侧选项卡标题仅显示一个小图标,而中间选项卡显示长文本。

这就是我想要的:

[________ TOTAL WIDTH __________]

[图标] [非常长的标题页] [Icon2]

这就是它的样子:

[__________________________总宽度__________________________]

[_________ Icon ________] [一个非常长的标题页] [_________ Icon2 ________]

因此,您可以从我糟糕的插图中看到,我希望中间选项卡占据大约70%的空间,并将其余部分用图标分配给2个选项卡。

现在我已经做了一些研究,人们建议我扩展一些布局类,但我无法让它工作。

有人可以如此友好地告诉我这是否可能以及我将如何实现它。

1 个答案:

答案 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]);
    }

一定会帮到你