Отключить вкладки в TabLayout

Я использовал TabLayout из последней библиотеки поддержки дизайна в своем приложении. Вкладки привязаны к viewpager, который загружает фрагменты для каждой вкладки. Я хочу отключить все вкладки, пока зритель не загрузит фрагмент для выбранной пользователем вкладки. Я не могу отключить tablayout или сделать его не кликабельным. Я использовал setEnabled(false) и setClickable(false) но он не работает. Я могу сделать его невидимым с помощью 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(false); tabLayout.setClickable(false); 

XML

android.support.design.widget.TabLayout
Android: id = "@ + id / tabLayout" android: layout_width = "match_parent"
андроид: layout_height = "0dp"
Android: layout_weight = "0,15"
андроид: скроллбары = «горизонтальный»
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) { } }); 

Существует 3 метода, реализованных приложением прослушивателя табуляции, один из которых – onTabSelected () помещает логическое условие, чтобы проверить, инициализирован ли ваш фрагмент . Тогда, если это условие выполнено, то разрешите транзакцию. Также инициализируйте вкладки после кода фрагмента

Другой трюк:

Вы можете поместить еще один пустой прозрачный вид в tablayout, пока ваше требование не будет выполнено. Когда вам нужно включить / показать вкладки, просто скройте пустой экран.

Если вы хотите отключить одну вкладку TabLayout, попробуйте этот код:

 tabHost.getTabWidget().getChildTabViewAt(your_index).setEnabled(false);