csdn下载地址:http://download.youkuaiyun.com/download/android_zhengyongbo/9980976
因为TabLayout无法更改TabItem的行间距所以记录了一下PagerSlidingTab的基本使用
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="PagerSlidingTabStrip">
<!--底部滑动指示器的颜色-->
<attr name="pstsIndicatorColor" format="color" />
<!--底部用于给指示器滑动的区域的颜色-->
<attr name="pstsUnderlineColor" format="color" />
<!--分割线的颜色-->
<attr name="pstsDividerColor" format="color" />
<!--指示器的高度-->
<attr name="pstsIndicatorHeight" format="dimension" />
<!--底部区域的高度-->
<attr name="pstsUnderlineHeight" format="dimension" />
<!--分割线与上下的间距-->
<attr name="pstsDividerPadding" format="dimension" />
<!--每个Tab的左右边距-->
<attr name="pstsTabPaddingLeftRight" format="dimension" />
<!--选中tab的滚动偏移量,个人基本没有用到过-->
<attr name="pstsScrollOffset" format="dimension" />
<!--每个Tab的背景图,StateListDrawable-->
<attr name="pstsTabBackground" format="reference" />
<!--是否根据tab均为位置,true的时候均分,默认为false,一般都是使用默认值-->
<attr name="pstsShouldExpand" format="boolean" />
<!--标题文本是否大写,默认为true-->
<attr name="pstsTextAllCaps" format="boolean" />
</declare-styleable>
</resources>
> 使用之后才发现PagerSlidingTab有一个bug,那就是Tab点击position不准,自己可以试一试,没问题则不用管下面代码
解决办法:
1.新建类CurrentIndexListener
public interface CurrentIndexListener {
public int getCurrentIndex();
}
2.在初始化viewpager的类中实现CurrentIndexListener接口
@Override
public int getCurrentIndex() {
if (viewPager != null) {
return viewPager.getCurrentItem();
}
return 0;
}
3.在viewPager的子视图中重写onResume,(index是选中tab的位置)
@Override
public void onResume() {
super.onResume();
if (getParentFragment() != null && getParentFragment() instanceof CurrentIndexListener) {
if (((CurrentIndexListener) getParentFragment()).getCurrentIndex() == index) {
setVisibleHint(true);
}
} else {
setVisibleHint(true);
}
}