Désactiver les Onglets dans TabLayout
J'ai utilisé TabLayout
à partir de la dernière conception de la bibliothèque de prise en charge de mon application. Les onglets sont attachés à un viewpager qui charge les fragments pour chaque onglet. Je veux désactiver tous les onglets jusqu'à ce que le viewpager charge le fragment de l'utilisateur onglet sélectionné. Je ne suis pas en mesure de désactiver l'tablayout ou de le rendre cliquable. J'avais utilisé setEnabled(false)
et setClickable(false)
mais ça ne fonctionne pas. Je suis en mesure de le rendre invisible en utilisant setVisiblity(View.GONE)
mais je veux les onglets pour être visible en tout temps.
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.de soutien.de la conception.widget de.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) {
}
});
- Double Possible de Désactiver TabLayout
Vous devez vous connecter pour publier un commentaire.
il y a 3 méthodes mises en œuvre par l'onglet, cliquez sur l'écoute, l'un d'eux est onTabSelected() mettre une condition booléenne pour vérifier si votre fragment est initialisé. Alors si cette condition est satisfaite alors autoriser la transaction.
Aussi initialiser les onglets après votre fragment de code
Un autre truc:
Vous pouvez mettre un autre en blanc transparent sur tablayout jusqu'à ce que votre exigence à remplir. Lorsque vous avez besoin pour activer/afficher les onglets puis il suffit de masquer le vide de la vue.
Si vous souhaitez désactiver l'onglet, vous avez juste besoin d'utiliser un customView
Tout d'abord, créez votre mise en page personnalisée (textView comme un exemple)
v_tabview.xml
créer sélecteur, pour changer l'état d'activer/désactiver (changement de couleur)
selector_tab.xml
puis gonflez, définir les noms et les ajouter à la tabLayout
et à la fin, un tour de magie! Dans cet exemple de code que j'ai la désactivation de tous les onglets. Si vous avez besoin de désactiver le deuxième et le troisième onglet, cochez la case "index" dans un cycle et désactiver si vous avez besoin d'
vous pouvez créer un util de fonction, mon plaisir dans Kotlin:
Quand vous voulez faire quelque chose avec une vue, vous pouvez déboguer ou cliquez dans parrent vue de savoir comment il est créé, par cette façon, vous pouvez faire tout ce que vous voulez. Dans ce cas, vous pouvez aller à Tablayout classe à comprendre.
Si tu veux le désactiver un onglet bouton sur TabLayout, puis essayez ce code: