android.support.design.widget.TabLayout设置指示器的宽度

来源:互联网 发布:windows 7彩蛋 编辑:程序博客网 时间:2024/06/04 04:10

问题

MD风格的,指示器宽度和条目等宽,无法设置margin值,或者padding值。

处理如下

    tabLayout.post(new Runnable() {            @Override            public void run() {                try {                    Field mTabStripField = mHomeBinding.tabLayout.getClass().getDeclaredField("mTabStrip");                    mTabStripField.setAccessible(true);                    LinearLayout mTabStrip = (LinearLayout) mTabStripField.get(mHomeBinding.tabLayout);                    int dp10 = 50;                    for (int i = 0; i < mTabStrip.getChildCount(); i++) {                        View tabView = mTabStrip.getChildAt(i);                        Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");                        mTextViewField.setAccessible(true);                        TextView mTextView = (TextView) mTextViewField.get(tabView);                        tabView.setPadding(0, 0, 0, 0);                        int width = 0;                        width = mTextView.getWidth();                        if (width == 0) {                            mTextView.measure(0, 0);                            width = mTextView.getMeasuredWidth();                        }                        LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();                        params.width = width;                        params.leftMargin = dp10;                        params.rightMargin = dp10;                        tabView.setLayoutParams(params);                        tabView.invalidate();                    }                } catch (NoSuchFieldException e) {                    e.printStackTrace();                } catch (IllegalAccessException e) {                    e.printStackTrace();                } catch (Throwable e) {                    e.printStackTrace();                }            }        });
原创粉丝点击