文章目录
  1. 1. 重新设置点击事件
  2. 2. 处理点击事件

Android design支持库中提供的TabLayout默认把Tab的OnClickListener给写死了,但是在项目中有时候需要做一些控制处理,比如选中某一个Tab之前必须是先登录,未登录的情况需要跳转到登录界面。

我们可以通过给TabLayout中的TabView重设OnClickListener解决这个问题

重新设置点击事件

viewPager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(viewPager);

for (int i = 0; i < tabLayout.getTabCount(); i++) {
    TabLayout.Tab tab = tabLayout.getTabAt(i);
    if (tab != null) {
        tab.setCustomView(pagerAdapter.getTabView(i));
        if (tab.getCustomView() != null) {
            View tabView = (View) tab.getCustomView().getParent();
            tabView.setTag(i);
            tabView.setOnClickListener(mTabOnClickListener);
        }
    }
}
viewPager.setCurrentItem(1);

处理点击事件

private View.OnClickListener mTabOnClickListener = new View.OnClickListener() {
       @Override
       public void onClick(View view) {
           int pos = (int) view.getTag();
           if (pos == 0) {
               Toast.makeText(BottomTabActivity.this, "您还没有登录", Toast.LENGTH_SHORT).show();
               //TODO 跳转到登录界面
           } else {
               TabLayout.Tab tab = tabLayout.getTabAt(pos);
               if (tab != null) {
                   tab.select();
               }
           }
       }
   };

原创文章,欢迎转载,转载请注明来自公众号Android开发精选:AndroidPush

地址:https://www.aswifter.com/2015/11/18/tablayout-reset-tab-click-listener/


本文出处程序员头条:http://www.iswifting.com/2016/02/01/TabLayout-android-tab/
转载请在开头注明本文出处。

欢迎关注本站微信公众号:为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等.并不定期奉送各种福利.
微信公众号猿圈:CodePush

文章目录
  1. 1. 重新设置点击事件
  2. 2. 处理点击事件