3

J'utilise le TabLayout trouvé dans la bibliothèque Service. J'ai essayé d'ajouter un OnLongClickListener lors d'un long clic sur un onglet. Cela a été impossible pour moi. J'ai même essayé de "pirater" en utilisant childViews:Ajouter OnLongClickListener sur le support android TabLayout | TabLayout.Tab

View tabLayoutChild = tabLayout.getChildAt(0); 
    ViewGroup group = (ViewGroup) tabLayoutChild; 
    group.getChildAt(0).setOnLongClickListener(this); 

Ne fonctionne pas et ne semble pas joli. C'est très pratique, sauf pour le longClick que je veux implémenter.

Mon petit bout de code

pagerAdapter = new CustomFragmentPagerAdapter(getSupportFragmentManager()); 
    pagerView.setAdapter(pagerAdapter); 
    tabLayout.setupWithViewPager(pagerView); 

Le tablayout a une méthode setOnLongClickListener() mais ce que je peux dire, il ne fait rien.

Comment puis-je implémenter un LongClickListener pour un onglet dans un tablayout?

Répondre

5

Vous pouvez faire

mTabLayout.getChildAt(0).setOnLongClickListener 

pour le mettre sur l'hôte de l'onglet, mais cela signifie qu'il ne se déclenche que lorsque vous appuyez sur l'espace dans le TabHost qui ne contient pas d'onglet (arrière-plan?).

Les onglets eux-mêmes se trouvent dans un SlidingTabStrip qui s'étend LinearLayout et nous pouvons l'utiliser pour accéder à chaque onglet. Nous définissons donc le programme d'écoute de longue durée par onglet comme suit:

LinearLayout tabStrip = (LinearLayout) mTabLayout.getChildAt(0); 
for (int i = 0; i < tabStrip.getChildCount(); i++) { 
    tabStrip.getChildAt(i).setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      return false; 
     } 
    }); 
}