【问题标题】:Android Tablayout: 3 Tabs, let center tab take 70% of available widthAndroid Tablayout:3个标签,让中心标签占据可用宽度的70%
【发布时间】:2016-03-02 16:46:49
【问题描述】:

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

我设置了GRAVITY_FILL 和MODE_FIXED,但这并没有达到我想要的效果。 我一直都有 3 个标签。左右选项卡标题只显示一个小图标,而中间选项卡有很长的文字。

这就是我想要的:

[________总宽度__________]

[图标][很长的标签页眉][图标2]

看起来是这样的:

[__________________________总宽度______________________________]

[_________Icon________][很长的标签页眉][_________Icon2________]

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

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

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

【问题讨论】:

  • 如何使用 TabLayout?我没有看到更改布局管理器的方法?
  • 我没有使用 TabLayout 我给你发了线索,可能是 percentLayout 可以在其中使用
  • 不可能在TabLayout 中使用百分比。选项卡以LinearLayout 布局。

标签: android android-tablayout


【解决方案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]);
    }

一定能帮到你

【讨论】:

  • 非常感谢。我会尽快尝试!
  • 再次感谢您阅读我的问题并提供完美答案!
猜你喜欢
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2019-01-20
  • 1970-01-01
  • 2020-06-26
相关资源
最近更新 更多