解决TabLayout自定义标签布局时遇到的,自定义标签布局不能填满标签的问题。
一般使用套路:
viewPager.setAdapter(viewPagerAdapter);
tabLayout.setupWithViewPager(viewPager);
for (int i = 0; i < 3; i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i);
TextView textView = (TextView) LayoutInflater.from(this).inflate(R.layout.red_test,tabLayout,false);
textView.setText(viewPagerAdapter.getTitles().get(i));
tab.setCustomView(textView);
}
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override //返回当前选择的标签
public void onTabSelected(TabLayout.Tab tab) {
Log.e("onTabSelected",tab.getPosition()+"");
}
@Override //返回释放的标签
public void onTabUnselected(TabLayout.Tab tab) {
Log.e("onTabUnselected",tab.getPosition()+"");
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
Log.e("onTabReselected",tab.getPosition()+"");
}
});
viewPagerAdapter中的getTitle()函数可以不用写了,在addOnTabSelectedListener()监听中去处理。
这样子就会遇到自己自定义的TextView布局不能填满标签,左右总有空隙。解决办法:
<style name="StyleMyCustomTagLayout" parent="Widget.Design.TabLayout">
<item name="tabPaddingStart">0dp</item>
<item name="tabPaddingEnd">0dp</item>
</style>
将这个style设置给Tablayout就可以了
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@android:color/transparent"
style="@style/StyleMyCustomTagLayout"
/>