TabLayout自己踩过的一些坑

TabLayout十分强大,特别是处理顶部导航的时候,几行代码就可以达到一个非常不错的效果,配置也相对简单,具体使用,此处不多讲,说说它与ViewPager联动的一些坑

1、TabLayout有直接关联 ViewPager的方法 setupWithViewPager(),使用这个方法,必须要在ViewPager设置适配器之后。
2、添加tab 使用这个方法 mTabLayout.addTab(mTabLayout.newTab()); 会出现tab不显示的情况。主要是适配器没重写 getPageTitle();方法否则不显示。 setupWithViewPager 会清除好多东西 追踪下代码,会移除许多ViewPager的监听,反正这个方法,也算是让人爱恨交加的方法了。
3、如果是做底部导航,那么关于设置icon的问题,我用了 icon会缩小,而且文字与icon的距离不可控。所以做底部导航就需要用到自己的View了,用来的十分不好用,扩展性不强,好在TabLayout给出了拓展View的标签,下面贴下代码当然 对应的ImageView的Drawable资源 就是一个selector 只不过里面的状态要判断的是status_selector
还有TextView的颜色选择器也要自己定义 ,我随便发一个我写的吧,大家参考就行

        ViewGroup tabParent;//根布局
        ImageView tabImg;//图片文件
        TextView tabText;//文本
        for (int i=0 ,length=names.length;i<length;i++) {
            TabLayout.Tab tab=mTabLayout.newTab();
            tabParent= (ViewGroup) getLayoutInflater().inflate(R.layout.custom_tab_item,null,false);
            tab.setCustomView(tabParent);
            //作者自己的布局这么get没毛病,还是推荐写id 通过findViewById获取控件
            tabImg= (ImageView) tabParent.getChildAt(0);
            tabText= (TextView) tabParent.getChildAt(1);

            tabImg.setImageResource(icons[i]);
            tabText.setText(names[i]);
            mTabLayout.addTab(tab);
        }

这样写扩展性非常强。不过这种写法需要手动实现一些监听,TabLayout也给我们做好了

mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
mTabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));

各种选择器实例:

图片选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/student_mine_true" android:state_selected="true"/>
    <item android:drawable="@drawable/student_mine_false"/>
</selector>

颜色选择器:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="@color/main_color"></item>
    <item android:state_selected="false" android:color="@color/main_grey"></item>
</selector>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值