Tablayout設定item間距
- 方法:1
/**
* 設定tablayout下劃線根據文字寬度而改變
* @param tabLayout
* @param padding
*/
public void setTabWidth(final TabLayout tabLayout, final int padding){
tabLayout.post(new Runnable() {
@Override
public void run() {
try {
//拿到tabLayout的mTabStrip屬性
LinearLayout mTabStrip = (LinearLayout) tabLayout.getChildAt(0);
for (int i = 0; i < mTabStrip.getChildCount(); i++) {
View tabView = mTabStrip.getChildAt(i);
//拿到tabView的mTextView屬性 tab的字數不固定一定用反射取mTextView
Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");
mTextViewField.setAccessible(true);
TextView mTextView = (TextView) mTextViewField.get(tabView);
tabView.setPadding(0, 0, 0, 0);
//字多寬線就多寬,所以測量mTextView的寬度
int width = 0;
width = mTextView.getWidth();
if (width == 0) {
mTextView.measure(0, 0);
width = mTextView.getMeasuredWidth();
}
//設定tab左右間距 注意這里不能使用Padding 因為原始碼中線的寬度是根據 tabView的寬度來設定的
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();
params.width = width ;
params.leftMargin = padding;
params.rightMargin = padding;
tabView.setLayoutParams(params);
tabView.invalidate();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
});
}
setTabWidth(tab, 25);
//這個方法要用在 tablayout 和viewPager 系結之前,tablayout 屬性設定 app:tabMode="fixed" 才有效
//系結viewPager
tab.setupWithViewPager(viewPager, false);
補充:如果只是為了寬度和字體寬度一樣,tablayout已經加入了新屬性
app:tabIndicatorFullWidth=“false”
上面的方法可以設定固定寬度
- 方法:2
在Android的TabLayout中item的間距是默認的,之前找了很多方法都沒有找到調整的方法,如果要修改則可以給TabLayout添加以下兩個屬性
app:tabMaxWidth=""
app:tabMinWidth="
``
添加完這兩個屬性后item之間默認的間距就會消失,這個時候就可以自己給item設定間距了,還是在TabLayout中添加以下屬性
app:tabPaddingStart=""
app:tabPaddingEnd=""
這樣就可以實作對TabItem的間距修改了
另一個參考文章很好記錄一下:https://blog.csdn.net/u010845516/article/details/79563561?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/230327.html
標籤:其他
下一篇:微信支付回傳-1問題
