tablayout点击背景取消
时间: 2023-11-11 17:05:10 浏览: 164
TabLayout+viewpager自定义.zip
要实现在 TabLayout 点击背景时取消选中当前选项卡,可以在 TabLayout 的 OnTabSelectedListener 中监听 Tab 的选中状态,当选中状态发生变化时,根据需要执行相应的操作。以下是一些实现方法:
1. 在 TabLayout 的 OnTabSelectedListener 中使用 setSelectedTabIndicatorColor 方法,将选中状态下的指示器颜色设置为透明,实现取消选中当前选项卡的效果。
```
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
// do something when tab selected
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
// do something when tab unselected
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
// do something when tab reselected
}
});
// set transparent color for selected tab indicator
tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT);
```
2. 在 TabLayout 的 OnTabSelectedListener 中手动设置选中状态,实现取消选中当前选项卡的效果。
```
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
// do something when tab selected
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
// manually unselect tab when background clicked
tabLayout.getTabAt(tab.getPosition()).select();
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
// do something when tab reselected
}
});
```
注意,第二种方法会在点击任何地方取消选中当前选项卡,而不仅仅是点击 TabLayout 的背景。如果您只想在点击 TabLayout 的背景时取消选中当前选项卡,可以使用以下方法:
```
tabLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// unselect tab when background clicked
tabLayout.getTabAt(tabLayout.getSelectedTabPosition()).select();
}
return false;
}
});
```
阅读全文