Android 选择TabLayout中的选项卡时更改行为
我有一个基本的表格布局,在2个选项卡下有2个列表(1个列表在选项卡a中,1个列表在选项卡B中),设置有一个ViewPager,如下所示Android 选择TabLayout中的选项卡时更改行为,android,tabs,android-viewpager,toast,android-tablayout,Android,Tabs,Android Viewpager,Toast,Android Tablayout,我有一个基本的表格布局,在2个选项卡下有2个列表(1个列表在选项卡a中,1个列表在选项卡B中),设置有一个ViewPager,如下所示 // CustomPagerAdapter extends PagerAdapter CustomPagerAdapter adapter = new CustomPagerAdapter(getFragmentManager()); adapter.addFragments(); TabLayout tabLayout = findViewById(R.id.
// CustomPagerAdapter extends PagerAdapter
CustomPagerAdapter adapter = new CustomPagerAdapter(getFragmentManager());
adapter.addFragments();
TabLayout tabLayout = findViewById(R.id.tab_layout);
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(PagerAdapter);
tabLayout.setupWithViewPager(viewPager);
给定的情况是,用户正在屏幕上看到选项卡。此时,当用户点击选项卡B时,我希望应用程序生成一条toast消息,说明无法查看选项卡B,而不是实际导航到选项卡B
换句话说,我不希望应用程序导航到选项卡B,我只希望当用户点击选项卡B时,它在选项卡a上显示祝酒词
我试过类似的东西
((LinearLayout)tabLayout.getChildAt(0)).setEnabled(false)
但这不起作用,因为上面的代码禁用了该选项卡,所以它甚至不显示Toast消息,因为它没有感觉到click事件
我觉得我需要保持它处于启用状态(通过setEnabled(true)或其他方式),并以某种方式覆盖该方法,以便应用程序显示一条Toast消息,而不是导航到另一个选项卡
我怎样才能做到这一点?我找不到任何其他与此问题相关的stackoverflow帖子
请帮忙 尝试向tablayout添加一个侦听器,如下所示
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tab.select();
Toast.makeText(getContext(), "This is toast", Toast.LENGTH_SHORT).show();
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
使用此代码启用/禁用TableLayout中的任何选项卡:
LinearLayout tabStrip = ((LinearLayout)tabLayout.getChildAt(0));
tabStrip.getChildAt(1).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(your condition) {
Toast.makeText(getActivity(), "Tab Enable", Toast.LENGTH_SHORT).show();
return false;
} else {
Toast.makeText(getActivity(), "Tab Disable", Toast.LENGTH_SHORT).show();
return true;
}
}
});
这并不能解决问题,因为选项卡b已打开后,会调用它们是的。。只有在第二个选项卡打开后,您才能返回到第一个选项卡。谢谢。我不得不稍微调整一下,但仍然很有帮助。