禁用TabLayout标签 [英] Disable Tabs in TabLayout

查看:2008
本文介绍了禁用TabLayout标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用 TabLayout 在我的应用程序的最新设计支持库。该标签附加到了哪些加载片段为每个标签一个viewpager。我想禁用所有选项卡,直到viewpager加载用户选择的标签的片段。我不能禁用tablayout或使其无法点击。我用了的setEnabled(假) setClickable(假),但它不工作。我能够使它不可见使用 setVisiblity(View.GONE),但我想的标签在任何时候都可见。

  tabLayout =(TabLayout)findViewById(R.id.tabLayout);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setTabMode(TabLayout.MODE_FIXED);
    tabLayout.addTab(tabLayout.newTab()的setIcon(R.drawable.near_me_hover).setTag(1)。);
    tabLayout.addTab(tabLayout.newTab()的setIcon(R.drawable.all_hostels).setTag(2)。);
    tabLayout.addTab(tabLayout.newTab()的setIcon(R.drawable.top_five).setTag(3)。);
    tabLayout.addTab(tabLayout.newTab()的setIcon(R.drawable.advanced_search).setTag(4)。);
    tabLayout.setEnabled(假);
    tabLayout.setClickable(假);

XML


  

android.support.design.widget.TabLayout结果
              机器人:ID =@ + ID / tabLayout
              机器人:layout_width =match_parent结果
              机器人:layout_height =0dp结果
              机器人:layout_weight =0.15结果
              机器人:滚动条=水平结果
              机器人:splitMotionEvents =FALSE>


  @覆盖
        公共无效onTabSelected(TabLayout.Tab标签){
            开关(tab.getPosition()){
                情况下0:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.near_me_hover);
                    打破;
                情况1:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.all_hostels_hover);
                    打破;
                案例2:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.top_five_hover);
                    打破;
                案例3:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.advanced_search_hover);
                    打破;
            }
        }        @覆盖
        公共无效onTabUnselected(TabLayout.Tab标签){
            开关(tab.getPosition()){
                情况下0:
                    tab.setIcon(R.drawable.near_me);
                    打破;
                情况1:
                    tab.setIcon(R.drawable.all_hostels);
                    打破;
                案例2:
                    tab.setIcon(R.drawable.top_five);
                    打破;
                案例3:
                    tab.setIcon(R.drawable.advanced_search);                    打破;
            }        }        @覆盖
        公共无效onTabReselected(TabLayout.Tab标签){
        }
    });
    viewPager.addOnPageChangeListener(新ViewPager.OnPageChangeListener(){
        @覆盖
        公共无效onPageScrolled(INT位置,浮positionOffset,诠释positionOffsetPixels){
        }        @覆盖
        公共无效使用onPageSelected(INT位置){
            tabLayout.getTabAt(位置)。选择();
        }        @覆盖
        公共无效onPageScrollStateChanged(INT状态){        }
    });


解决方案

有由选项卡中单击监听器实现3种方法,其中之一就是 onTabSelected()把一个布尔条件检查,如果您的片段被初始化。然后,如果该条件被满足则允许交易发生。
您的片段code后也初始化标签页

I have used TabLayout from the latest design support library in my app. The tabs are attached to a viewpager which loads the fragments for each tab. I want to disable all the tabs until the viewpager loads the fragment for user selected tab. I am not able to disable the tablayout or make it non-clickable. I had used setEnabled(false) and setClickable(false) but it is not working. I am able to make it invisible by using setVisiblity(View.GONE) but I want the tabs to be visible at all times.

    tabLayout = (TabLayout) findViewById(R.id.tabLayout);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
    tabLayout.setTabMode(TabLayout.MODE_FIXED);
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.near_me_hover).setTag(1));
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.all_hostels).setTag(2));
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.top_five).setTag(3));
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.advanced_search).setTag(4));
    tabLayout.setEnabled(false);
    tabLayout.setClickable(false);

XML

android.support.design.widget.TabLayout
android:id="@+id/tabLayout" android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.15"
android:scrollbars="horizontal"
android:splitMotionEvents="false" >

        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            switch (tab.getPosition()) {
                case 0:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.near_me_hover);
                    break;
                case 1:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.all_hostels_hover);
                    break;
                case 2:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.top_five_hover);
                    break;
                case 3:
                    viewPager.setCurrentItem(tab.getPosition());
                    tab.setIcon(R.drawable.advanced_search_hover);
                    break;
            }
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            switch (tab.getPosition()) {
                case 0:
                    tab.setIcon(R.drawable.near_me);
                    break;
                case 1:
                    tab.setIcon(R.drawable.all_hostels);
                    break;
                case 2:
                    tab.setIcon(R.drawable.top_five);
                    break;
                case 3:
                    tab.setIcon(R.drawable.advanced_search);

                    break;
            }

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {
        }
    });
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            tabLayout.getTabAt(position).select();
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

解决方案

there are 3 methods implemented by the tab click listener, one of them is onTabSelected() put a boolean condition to check if your fragment is initialised. Then if that condition is satisfied then allow transaction to take place. Also initialize the tabs after your fragment code

这篇关于禁用TabLayout标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆