3

Я использую TabLayout, найденный в библиотеке службы. Я пытаюсь добавить OnLongClickListener при длительном нажатии на вкладку. Это было невозможно для меня. Я даже пытался «взломать» его с помощью childViews:Добавить OnLongClickListener в поддержку android TabLayout | TabLayout.Tab

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

Не работает и не выглядит красиво. Это очень удобно, за исключением longClick, который я хочу реализовать.

Мой небольшой фрагмент кода

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

tablayout имеет метод setOnLongClickListener(), но что я могу сказать, что ничего не делает.

Как я могу реализовать LongClickListener для вкладки в tablayout?

ответ

5

Вы можете сделать

mTabLayout.getChildAt(0).setOnLongClickListener 

установить его на закладке хозяина, но это означает, что он вызывает только при нажатии на место в TabHost, который не содержит вкладки (фон?).

Вкладки сами находятся в SlidingTabStrip, который расширяет LinearLayout, и мы можем использовать его для перехода на каждую вкладку. Таким образом, мы установили длинный прессующий прессу на одну вкладку следующим образом:

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; 
     } 
    }); 
}