Tablayout 指示器寬度調(diào)整

在使用tablayout 中 需要修改文字下方的指示器寬度

實(shí)際中原生tablayout 是沒(méi)有相關(guān)對(duì)外方法實(shí)現(xiàn)修改功能的我們需要用到反射處理

保證tablayout 可以使用為前提 在使用后加入下方代碼

mTabTl.post(newRunnable() {

? ? ? ? @Override

? ? ? ?public voidrun() {

? ? ? ? ? ? ? setIndicator(mTabTl,60,60);

? ? ? }

});


private voidsetIndicator(TabLayout tabs, intleftDp, intrightDp) {

? ? ? ? ?Class tabLayout = tabs.getClass();

? ? ? ? ?Field tabStrip =null;

? ? ? ? ?try{

? ? ? ? ? ? ?//拿到我們需要修改的屬性值 名字只能是這個(gè)

? ? ? ? ? ? ? tabStrip = tabLayout.getDeclaredField("mTabStrip");

? ? ? ? ?}catch(NoSuchFieldException e) {

? ? ? ? ? ? ?e.printStackTrace();

}

? ? ? ?tabStrip.setAccessible(true);

? ? ? ?LinearLayout llTab =null;

? ? ? ?try{

? ? ? ? ? / /獲取到我們需要的tablayout?

? ? ? ? ? ? llTab = (LinearLayout) tabStrip.get(tabs);

? ? ? ?}catch(IllegalAccessException e) {

? ? ? ? ? ? ?e.printStackTrace();

? ? ? ?}

//轉(zhuǎn)換調(diào)整數(shù)值

intleft = (int) TypedValue.applyDimension(

? ? ? ? ? ?TypedValue.COMPLEX_UNIT_DIP,leftDp,Resources.getSystem().getDisplayMetrics());

? ? ?intright = (int) TypedValue.applyDimension(

? ? ? ? ? ?TypedValue.COMPLEX_UNIT_DIP,rightDp,Resources.getSystem().getDisplayMetrics());

? ? ?for(inti =0;i < llTab.getChildCount();i++) {

? ? ? ? ? View child = llTab.getChildAt(i);

? ? ? ? ? child.setPadding(0,0,0,0);

? ? ? ? //最終的方法還是使用代碼動(dòng)態(tài)的修改屬性值

? ? ? ? ?LinearLayout.LayoutParams params=newLinearLayout.LayoutParams(

? ? ? ? ? ? ? ? ? ? ? ? ? 0,LinearLayout.LayoutParams.MATCH_PARENT,1);

? ? ? ? ? params.leftMargin= left;

? ? ? ? ? params.rightMargin= right;

? ? ? ? ? child.setLayoutParams(params);

? ? ? ? ? child.invalidate();

}

}

簡(jiǎn)單來(lái)說(shuō)就是拿到關(guān)鍵屬性動(dòng)態(tài)修改值 但是還不知道適配情況怎么樣

介紹完畢 需要更專業(yè)理解的請(qǐng)查閱如下資料

http://www.itdecent.cn/p/581e4ea600f9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容