美文网首页
tablayout较全的用法(会陆续补充)

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

作者: azerkang | 来源:发表于2017-06-08 11:39 被阅读49次

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);
        }
    });

相关文章

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

    tablayout较全的用法(会陆续补充) tablayout 标题文字样式 改变下划线长度(通过反射的方法) 在...

  • Android学习整理-2-TabLayout的学习

    Android学习整理 - 系列 Design Library -- TabLayout的用法 TabLayout...

  • TabLayout 的用法

    TabLayout是属于容器控件, 提供水平显示Tab的效果. 常常和ViewPager配合使用. 我将全面地讲解...

  • TabLayout简单使用

    简单的介绍TabLayout的常规用法 效果图: 布局: 布局上面就是很简单的采用上面TabLayout下面Vie...

  • TabLayout 的用法小记

    TabLayout是用来显示tab的控件,要使用TabLayout首先要引入design开发库: implemen...

  • TabLayout 的几种用法

    1.结合ViewPager使用 这是最常见的用法了,实现也比较简单。 布局文件: 对应的Activity页面: 设...

  • 陆续补充

    1、如何学做精致喜爱的早餐,午餐和晚餐。做美食,做小吃,做蛋糕。对于吃货的世界里,对于过去的自己更多的是享受美食。...

  • TabLayout两种添加tab方式,结合ViewPager+F

    今天一哥们问我是否使用过TabLayout,他的项目中用到了TabLayout,他之前没有使用过,对用法和一些属性...

  • TabLayout自定义tab,实现多样导航栏

    前言 之前讲过TabLayout的基本属性全解,但是对于TabLayout实现的导航栏仍是有诸多限制,例如不能任意...

  • TabLayout 的简单用法

    1.结合ViewPager使用 这是最常见的用法了,实现也比较简单。 布局文件: 对应的Activity页面: 设...

网友评论

      本文标题:tablayout较全的用法(会陆续补充)

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