Android 标签布局:3 个标签,让中心标签占可用宽度的 70%
Android Tablayout: 3 Tabs, let center tab take 70% of available width
我目前正在我的应用程序中使用 TabLayout。
我设置了 GRAVITY_FILL
和 MODE_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]);
}
一定能帮到你
我目前正在我的应用程序中使用 TabLayout。
我设置了 GRAVITY_FILL
和 MODE_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]);
}
一定能帮到你