Вы должны добавить оператор else
к вашему onTabSelected
, потому что если вы установите видимость один раз, он не вернется к своей первоначальной форме, так как это макет вкладки.Но сначала вам нужно установить Boolean
, чтобы сообщить menuItem, должен ли он отображаться или нет.
private boolean searchViewShown = false;
@Override
public void onTabSelected(TabLayout.Tab tab) {
if(tab.getPosition() == 1) {
searchViewShown = false;
} else {
searchViewShown = true;
}
invalidateOptionsMenu();
viewPager.setCurrentItem(tab.getPosition());
}
Обновление
Кажется, что ваш SearchView
это пункт меню.В этом случае вам нужно добавить onPrepareOptionsMenu
и установить здесь видимость вашего searchView
, например:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem itm = menu.findItem(R.id.action_search);
if (searchViewShown) {
itm.setVisible(true);
} else {
itm.setVisible(false);
}
return true
}
Затем добавьте invalidateOptionsMenu()
всякий раз, когда вы выбираете вкладку, чтобы она вызывала onPrepareOptionsMenu
и проверьте, будет ли отображаться ваш searchView.