tablayout较全的用法(会陆续补充)

tablayout较全的用法(会陆续补充)

<android.support.design.widget.TabLayout
            android:id="@+id/tablayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            //背景颜色
            android:background="@color/gray_new"
            app:tabGravity="fill"
            //下划线颜色
            app:tabIndicatorColor="@color/blue"
            //下划线高度
            app:tabIndicatorHeight="@dimen/pad_3"
            app:tabMode="fixed"
            //字体样式(下边会补充)
            app:tabTextAppearance="@style/MyTabLayoutTextAppearance"
           //选中时的字体颜色             
            app:abTextColor="#000000" />

tablayout 标题文字样式

<style name="MyTabLayoutTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textSize">20sp</item>
    <item name="android:textColor">@android:color/black</item>
    <item name="android:textStyle">bold</item>
</style>

改变下划线长度(通过反射的方法)

 public void setIndicator(TabLayout tabs, int leftDip, int rightDip) {
    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();
    }

    int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, leftDip, Resources.getSystem().getDisplayMetrics());
    int right = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, rightDip, Resources.getSystem().getDisplayMetrics());

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

在oncreate中调用修改长度

tabLayout.post(new Runnable() {
        @Override
        public void run() {
            setIndicator(tabLayout, 10, 10);
        }
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,633评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,765评论 0 17
  • 飘飘 在空中飘飘 落在天边浸染的叶 风儿 风声在心中发酵 大自然是个大喇叭 把你从封闭的室内引到露天 作为一个听众...
    宏木每阅读 1,846评论 0 1
  • 史蒂夫·乔布斯剧场,开场的乔布斯录音播放,似乎是在纪念一个时代,也在告别一个时代。如此的背景,让这一次的苹果秋季发...
    时凤卫阅读 4,340评论 0 6
  • 我喜欢做饭,但是又特别怕当沾着水的蔬菜倒进锅里时热油疯狂溅起,尤其是让你要炸一个洋葱虾仁饼时,那一下子燥起来的...
    道格拉斯企鹅阅读 1,690评论 0 2