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

Android Tablayout: 3 Tabs, let center tab take 70% of available width

我目前正在我的应用程序中使用 TabLayout

我设置了 GRAVITY_FILLMODE_FIXED 但这并没有达到我想要的效果。 我一直有 3 个标签。左右标签 header 只显示一个小图标,而中间标签有很长的文字。

这就是我想要的:

[________TOTAL WIDTH__________]

[图标][一个很长的标签header][图标2]

这是它的样子:

[________________________TOTAL WIDTH__________________________]

[_________Icon________][一个很长的选项卡header][_________Icon2________]

因此,正如您希望从我糟糕的插图中看到的那样,我想让中间的选项卡占据 space 的大约 70%,并将其余部分分配给带有图标的 2 个选项卡。

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

谁能告诉我这是否可行以及我将如何实现它。

这是您问题的唯一解决方案

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

一定能帮到你