Навигация по вкладкам ActionBar с пользовательскими панелями действий
У меня странное поведение с вкладками ActionBar, отображаемыми над панелью действий. Это происходит, когда я устанавливаю пользовательское представление для ActionBar. Я реализую шаблон Done-Discard, используя пример Романа Нурика здесь
Это происходит из-за маскировки ActionBar.DISPLAY_SHOW_HOME в setDisplayOptions()
final ActionBar actionBar = getActionBar();
actionBar.setDisplayOptions(
ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME
| ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setCustomView(customActionBarView, new ActionBar.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
Экран выглядит так:
Но когда я не маскирую ActionBar.DISPLAY_SHOW_HOME, он работает нормально, но отображается логотип приложения. как это.
Кажется, это ошибка. Пожалуйста, предложите исправление. Я не хочу, чтобы логотип отображался.
2 ответа
Решение здесь:
ActionBarSherlock - вкладки появляются над панелью действий с пользовательским представлением
и здесь: https://github.com/JakeWharton/ActionBarSherlock/issues/327
Мне это кажется немного хакерским, но вот обходной путь: добавьте этот фрагмент кода в свой onCreate и скройте значок Home. Теперь ActionBar и Tabs работают как положено.
Не забудьте не отключать / маскировать DISPLAY_HOME_HOME в ActionBar.setDisplayOptions(). Это не будет работать, если вы замаскируете / отключите его.
View homeIcon = findViewById(android.R.id.home);
((View) homeIcon.getParent()).setVisibility(View.GONE);
Сначала установите свойство "DisplayShowHomeEnabled" панели действий в "true":
actionBar.setDisplayShowHomeEnabled (истина);
а потом:
View homeIcon = findViewById(android.R.id.home);
((View) homeIcon.getParent()).setVisibility(View.GONE);
((View) homeIcon).setVisibility(View.GONE);
Я надеюсь, что это помогает:)