Как избежать кнопки «вверх» с навигацией джетпака и нижними вкладками? - PullRequest
0 голосов
/ 11 ноября 2018

Я хотел бы иметь поведение, подобное YouTube:

  • имеет панель инструментов и нижние вкладки
  • при переходе в «Библиотеку» (5-я вкладка) кнопка «вверх» не появляется
  • при входе в "Мои видео" появляется кнопка вверх

Вот мои ограничения:

  • использовать навигационный джетпак
  • используйте Toolbar (внутри AppBarLayout, если это имеет значение)
  • имеют нижние вкладки (BottomNavigationView)
  • все нижние вкладки являются «верхним уровнем» в том смысле, что они не меняют Toolbar кнопку вверх
  • экраны других приложений не являются "верхним уровнем" и должны иметь стрелку вверх
  • одна из вкладок - пункт назначения навигационного графика по умолчанию

По умолчанию, когда все реализовано, навигация автоматически обрабатывается навигационной библиотекой Jetpack. Я подключаю панель инструментов к контроллеру навигации с помощью этого помощника:

NavigationUI.setupWithNavController(main_toolbar, navController)

Это работает хорошо, но если я переключаю одну из нижних вкладок, появляется кнопка вверх, и при нажатии она возвращается к месту назначения по умолчанию.

Это нормально, когда нижние вкладки не используются, но это неудобно, когда они используются.

1 Ответ

0 голосов
/ 11 ноября 2018

Вы можете указать AppBarConfiguration в качестве третьего параметра для NavigationUI.setupWithNavController. И передайте ему пункты назначения верхнего уровня, например:

Set<Integer> topLevelDestinations = new HashSet<>();
topLevelDestinations.add(R.id.navigation_home);
topLevelDestinations.add(R.id.navigation_trending);
topLevelDestinations.add(R.id.navigation_subscriptions);
topLevelDestinations.add(R.id.navigation_inbox);
topLevelDestinations.add(R.id.navigation_library);

AppBarConfiguration appBarConfiguration = new AppBarConfiguration
        .Builder(topLevelDestinations)
        .build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);

Подробнее: AppBarConfiguration

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...