【发布时间】:2016-01-08 12:58:23
【问题描述】:
在我的 android 应用程序中,我设置了这样的选项卡布局:
final TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("TAB 1"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 2"));
tabLayout.addTab(tabLayout.newTab().setText("TAB 3"));
我想禁用标签 2 和标签 3。 我试试这个,它的工作原理:
tabLayout.getChildAt(1).setEnabled(false);
tabLayout.getChildAt(2).setEnabled(false);
但我也想设置一个 toast 反馈,如果有人点击禁用选项卡,例如“此选项卡未解锁”
为此,我尝试为选项卡 2 和 3 设置 onclicklistener。 但是这个监听器不起作用,如果我之前用代码禁用了选项卡。
有人知道我该如何解决这个问题吗?
更新
@Override
public void onTabSelected(TabLayout.Tab tab) {
if (tab.getPosition() == 1) {
viewPager.setCurrentItem(0);
TabLayout.Tab tab1 = tabLayout.getTabAt(0);
tab1.select();
} else {
viewPager.setCurrentItem(tab.getPosition());
}
}
【问题讨论】:
-
当视图被禁用时,您无法接收点击事件。请尝试使用 TouchListener。 Here你可以找到一个如何在TouchListener中检测点击事件的例子。
-
我现在尝试另一种方式。请看我第一篇文章的更新部分。我工作正常。但问题是,我必须将选项卡指示器设置回选项卡 1。有没有办法?
-
@SpecialFighter 我得到的 tabLayout.getChildCount() 总是为 1,不管我添加了多少标签。知道为什么吗?