TabLayout属性遇到的问题

来源:互联网 发布:看得见风景的房间 知乎 编辑:程序博客网 时间:2024/06/05 08:10
这个是对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的位置

原创粉丝点击