本文介绍了Android选项卡布局:围绕选项卡标题包装选项卡指示器宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有任何方法可以围绕选项卡标题包装选项卡指示器宽度?
Is there any way to wrap tab indicator width with respect to tab title ?
推荐答案
是,可以将制表符作为标题设置填充为0
Yes, it's possible to wrap tab indicator as title setting padding to 0
public void wrapTabIndicatorToTitle(TabLayout tabLayout, int externalMargin, int internalMargin) {
View tabStrip = tabLayout.getChildAt(0);
if (tabStrip instanceof ViewGroup) {
ViewGroup tabStripGroup = (ViewGroup) tabStrip;
int childCount = ((ViewGroup) tabStrip).getChildCount();
for (int i = 0; i < childCount; i++) {
View tabView = tabStripGroup.getChildAt(i);
//set minimum width to 0 for instead for small texts, indicator is not wrapped as expected
tabView.setMinimumWidth(0);
// set padding to 0 for wrapping indicator as title
tabView.setPadding(0, tabView.getPaddingTop(), 0, tabView.getPaddingBottom());
// setting custom margin between tabs
if (tabView.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) {
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) tabView.getLayoutParams();
if (i == 0) {
// left
settingMargin(layoutParams, externalMargin, internalMargin);
} else if (i == childCount - 1) {
// right
settingMargin(layoutParams, internalMargin, externalMargin);
} else {
// internal
settingMargin(layoutParams, internalMargin, internalMargin);
}
}
}
tabLayout.requestLayout();
}
}
private void settingMargin(ViewGroup.MarginLayoutParams layoutParams, int start, int end) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
layoutParams.setMarginStart(start);
layoutParams.setMarginEnd(end);
layoutParams.leftMargin = start;
layoutParams.rightMargin = end;
} else {
layoutParams.leftMargin = start;
layoutParams.rightMargin = end;
}
}
编辑:从com.android.support:design:28.0.0
开始,您可以通过以下设置轻松地将指示器调整为标签:
EDIT:As of com.android.support:design:28.0.0
, you can adjust the indicator as label easily now setting:
app:tabIndicatorFullWidth="false"
EDIT 2019年7月:使用androidX依赖com.google.android.material:material:x.x.x
EDIT July 2019:Use the androidX dependencycom.google.android.material:material:x.x.x
这篇关于Android选项卡布局:围绕选项卡标题包装选项卡指示器宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!