PagerSlidingTab的基本使用

来源:互联网 发布:酷玩实验室 知乎 编辑:程序博客网 时间:2024/06/06 05:41

csdn下载地址:http://download.csdn.net/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);        }    }