解决原生TabLayout多行显示的问题
通过反射,获取TabLayout的tabView对象,在获取tabView的mDefaultMaxLines属性,将该属性设置为1
TabLayout调用的代码
mTabLayout.post(new Runnable() {
@Override
public void run() {
reflex(mTabLayout);
// 将TabLayout和ViewPager绑定在一起,使双方各自的改变都能直接影响另一方
mTabLayout.setupWithViewPager(mViewPager);
}
});
public static void reflex(final TabLayout tabLayout) {
//拿到SlidingTabStrip的布局
LinearLayout mTabStrip = (LinearLayout) tabLayout.getChildAt(0);
//遍历SlidingTabStrip的所有TabView子view
for (int i = 0; i < mTabStrip.getChildCount(); i++) {
View tabView = mTabStrip.getChildAt(i);
//通过反射拿到TabView的的mTextView
try {
Field mTextViewField = tabView.getClass().getDeclaredField("mDefaultMaxLines");
mTextViewFie