美文网首页Android知识点和文章分享UI
修改TabLayout Indicator的宽度

修改TabLayout Indicator的宽度

作者: 白日梦__ | 来源:发表于2016-09-29 14:47 被阅读3836次
/**
     * 通过反射修改TabLayout Indicator的宽度(仅在Android 4.2及以上生效)
     */
    private void setUpIndicatorWidth() {
        Class<?> tabLayoutClass = tabLayout.getClass();
        Field tabStrip = null;
        try {
            tabStrip = tabLayoutClass.getDeclaredField("mTabStrip");
            tabStrip.setAccessible(true);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }

        LinearLayout layout = null;
        try {
            if (tabStrip != null) {
                layout = (LinearLayout) tabStrip.get(tabLayout);
            }
            for (int i = 0; i < layout.getChildCount(); i++) {
                View child = layout.getChildAt(i);
                child.setPadding(0, 0, 0, 0);
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                    params.setMarginStart(dip2px(mContext, 18f));
                    params.setMarginEnd(dip2px(mContext, 18f));
                }
                child.setLayoutParams(params);
                child.invalidate();
            }
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

TabLayout中Indicator的样式修改

相关文章

网友评论

    本文标题:修改TabLayout Indicator的宽度

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