在Android支持TabLayout上添加OnLongClickListener TabLayout.Tab

Yok*_*ich 4 android onlongclicklistener android-tabs android-tablayout

我正在使用服务库中的TabLayout.我在长按一个选项卡时尝试添加OnLongClickListener.对我来说这是不可能的.我甚至试图通过使用childViews来"破解"它:

View tabLayoutChild = tabLayout.getChildAt(0);
    ViewGroup group = (ViewGroup) tabLayoutChild;
    group.getChildAt(0).setOnLongClickListener(this);
Run Code Online (Sandbox Code Playgroud)

不起作用,看起来不漂亮.除了我想实现的longClick之外,它都非常方便.

我的一小段代码

pagerAdapter = new CustomFragmentPagerAdapter(getSupportFragmentManager());
    pagerView.setAdapter(pagerAdapter);
    tabLayout.setupWithViewPager(pagerView);
Run Code Online (Sandbox Code Playgroud)

tablayout有一个方法,setOnLongClickListener()但我可以告诉它,它什么都不做.

如何为tablayout中的选项卡实现LongClickListener?

dar*_*ken 6

你可以做

mTabLayout.getChildAt(0).setOnLongClickListener
Run Code Online (Sandbox Code Playgroud)

在标签主机上设置它,但这意味着只有当您点击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;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)