美文网首页android开发技巧
改变TabLayout下划线的长度

改变TabLayout下划线的长度

作者: w启 | 来源:发表于2017-09-14 15:24 被阅读69次

思想:运用反射的方式来实现

封装的方法如下:


  public voidsetIndicator(TabLayout tabs, intleftDip, intrightDip) {
    Class tabLayout = tabs.getClass();
    Field tabStrip =null;
    try{
        tabStrip = tabLayout.getDeclaredField("mTabStrip");
    }catch(NoSuchFieldException e) {
        e.printStackTrace();
    }
    tabStrip.setAccessible(true);
    LinearLayout llTab =null;
    try{
        llTab = (LinearLayout) tabStrip.get(tabs);
    }catch(IllegalAccessException e) {
        e.printStackTrace();
    }

    intleft = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,leftDip,Resources.getSystem().getDisplayMetrics());
    intright = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,rightDip,Resources.getSystem().getDisplayMetrics());

    for(inti =0;i < llTab.getChildCount();i++) {
          View child = llTab.getChildAt(i);
          child.setPadding(0,0,0,0);
          LinearLayout.LayoutParams params =newLinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,1);
          params.leftMargin= left;
          params.rightMargin= right;
          child.setLayoutParams(params);
          child.invalidate();
      }
    }


在tablayout渲染完成之后调用

tabLayout.post(newRunnable() {
@Override
public voidrun() {
setIndicator(tabLayout,40,40);
}
});





相关文章

网友评论

    本文标题:改变TabLayout下划线的长度

    本文链接:https://www.haomeiwen.com/subject/jeedsxtx.html