国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android TabLayout設置指示器寬度的方法

2019-10-22 18:13:16
字體:
來源:轉載
供稿:網友

anroid 5.0 Design  v7 包中引用了TabLayout 簡單快速的寫出屬于自己的Tab切換效果 如圖所示:

tablayout,指示器寬度,指示器

但是正常使用中你發現無法設置tablayout指示器的寬度。查看源碼你會發現設計師將指示器的寬度設置成TabView最大的寬度。并且設計師并沒有給我們暴漏出接口,這導致有時使用TabLayout無法滿足一些產品設計要求,這么好的組件無法使用還需要自定義費時費力。這個時候我們可以通過反射機制拿到TabLayout中的指示器對象對它的寬度進行處理就可以滿足我們的要求:具體代碼如下

重寫  onMeasure方法

@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  super.onMeasure(widthMeasureSpec, heightMeasureSpec);  int dp10 = CommUitls.dip2px(context, 10);  LinearLayout mTabStrip = (LinearLayout) this.getChildAt(0);  try {    Field mTabs = TabLayout.class.getDeclaredField("mTabs");    mTabs.setAccessible(true);    ArrayList<Tab> tabs = (ArrayList<Tab>) mTabs.get(this);    for (int i = 0; i < mTabStrip.getChildCount(); i++) {      Tab tab = tabs.get(i);      Field mView = tab.getClass().getDeclaredField("mView");      mView.setAccessible(true);      Object tabView = mView.get(tab);      Field mTextView = context.getClassLoader().loadClass("android.support.design.widget.TabLayout$TabView").getDeclaredField("mTextView");      mTextView.setAccessible(true);      TextView textView = (TextView) mTextView.get(tabView);      float textWidth = textView.getPaint().measureText(textView.getText().toString());      View child = mTabStrip.getChildAt(i);      child.setPadding(0, 0, 0, 0);      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((int) textWidth, LinearLayout.LayoutParams.MATCH_PARENT);      params.leftMargin = dp10;      params.rightMargin = dp10;      child.setLayoutParams(params);      child.invalidate();    }  } catch (Exception e) {    e.printStackTrace();  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云浮市| 金湖县| 襄樊市| 稻城县| 威信县| 时尚| 高要市| 蓬莱市| 博乐市| 莱阳市| 宝清县| 高安市| 新泰市| 仙桃市| 花垣县| 怀化市| 东乌珠穆沁旗| 靖江市| 德惠市| 张掖市| 柳江县| 荣昌县| 刚察县| 安龙县| 涟水县| 廉江市| 巴中市| 洛扎县| 威信县| 高州市| 日照市| 阿尔山市| 湟中县| 柘荣县| 永安市| 通渭县| 方正县| 松滋市| 余庆县| 侯马市| 扶沟县|