PagerSlidingTab的基本使用

本文介绍如何使用PagerSlidingTab,并提供了解决Tab点击位置不准确的问题方案。包括自定义样式属性、实现CurrentIndexListener接口及重写onResume方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值