在android support TabLayout | TabLayout.Tab上添加OnLongClickListener

6

我正在使用Service库中的TabLayout。我尝试在长按选项卡时添加OnLongClickListener,但一直无法实现。我甚至试图通过使用childViews进行“hack”,但依然不成功:

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

这个功能不能正常工作,而且看起来也不美观。除了我想要实现的长按操作之外,其他都非常方便。

我的代码片段:

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

标签布局有一个setOnLongClickListener()方法,但据我所知,它并没有实际作用。
如何在标签布局中为标签实现长按监听器?
1个回答

9

你可以做的事情:

mTabLayout.getChildAt(0).setOnLongClickListener

要在选项卡主机上设置它,但这意味着只有在您点击不包含选项卡(背景?)的TabHost中的空格时才会触发。

选项卡本身驻留在扩展LinearLayout的SlidingTabStrip中,我们可以使用它来访问每个选项卡。因此,我们像这样为每个选项卡设置长按侦听器:

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

如果您的TabLayout是动态填充的(选项卡本身),请确保在填充后才调用此函数。 - FirstOne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接