TabLayout属性遇到的问题

这个是对tablayout的监听事件
mTablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {

        Toast.makeText(mContext, "选中的"+tab.getText(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {

        Toast.makeText(mContext, "未选中的"+tab.getText(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

        Toast.makeText(mContext, "复选的"+tab.getText(), Toast.LENGTH_SHORT).show();

    }
});
for (int i = 0; i < tabLayout.getTabCount(); i++) {
    TabLayout.Tab tab = tabLayout.getTabAt(i);
    if (tab == null) return;
    //这里使用到反射,拿到Tab对象后获取Class
    Class c = tab.getClass();
    try {
        //Filed “字段、属性”的意思,c.getDeclaredField 获取私有属性。
        //"mView"是Tab的私有属性名称(可查看TabLayout源码),类型是 TabView,TabLayout私有内部类。
        Field field = c.getDeclaredField("mView");
        //值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
        //如果不这样会报如下错误
        // java.lang.IllegalAccessException:
        //Class com.test.accessible.Main
        //can not access
        //a member of class com.test.accessible.AccessibleTest
        //with modifiers "private"
        field.setAccessible(true);
        final View view = (View) field.get(tab);
        if (view == null) return;
        view.setTag(i);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = (int) view.getTag();
                //这里就可以根据业务需求处理点击事件了。
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}



这个属性监听tabylout滑动位置,,刚刚做的一个项目需要的是弹出一个popuwondow,里面是listview点击一个item,,,,得到position来跳到某个taylayout用这个属性就ok了
tabLayout.setScrollPosition(position,0f,true);
第一个参数表示当前Tab的位置,第二个参数是偏移值,从文档中看到该值的取值范围是0到1的一个半开区间,最后一个参数很好理解表示是
否置移动后位置所对应的Tab为选中状态,打个比方,如果我从0移动到1的位置,如果updateSelectedText为true,那么1这个位置上的文
本就会是一个选中状态。上面的代码中我们只是简单地让下方的横条从0的Tab位置移动到一个0.5F的位置


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值