3

我正在使用服務庫中的TabLayout。我長時間在選項卡上嘗試添加OnLongClickListener。對我來說這是不可能的。我甚至試圖通過使用childView來「破解」它:在android支持TabLayout上添加OnLongClickListener | 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(),但我可以告訴,它什麼都不做小片段。

如何爲tablayout中的選項卡實現LongClickListener?

回答

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