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

首頁 > 系統 > Android > 正文

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

2019-12-12 01:03:06
字體:
來源:轉載
供稿:網友

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

但是正常使用中你發現無法設置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();  }}

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 红原县| 永兴县| 宣恩县| 饶河县| 曲周县| 修文县| 乐昌市| 渭南市| 册亨县| 砚山县| 富宁县| 翁源县| 齐齐哈尔市| 精河县| 丹江口市| 建阳市| 正阳县| 榆社县| 嘉义县| 平江县| 龙南县| 台北市| 汝州市| 桃园市| 津南区| 灌云县| 邵阳县| 庆元县| 高雄市| 北京市| 闻喜县| 佛山市| 高阳县| 离岛区| 双桥区| 阜阳市| 密山市| 江西省| 正镶白旗| 清新县| 镇赉县|