具有底部导航视图和导航组件的后退导航

时间:2019-10-29 19:04:59

标签: android bottomnavigationview android-architecture-navigation

我有一个带有3个入口点(片段A,B和C)的底部导航视图,并且每个入口点都可以移至其他片段(A-> D,B-> E,C-> F)。要导航,我正在使用体系结构导航组件。 我希望当用户位于A,B或C中并且按下后退按钮时,应用程序退出。如果他在D,E或F中,则应分别去A,B或C。

根据在菜单和导航图中具有相同ID的文档,是设置视图和导航组件的方法。

我知道我可以覆盖导航并自己处理它以实现我想要的效果,或者覆盖后退按钮。但我想知道是否有一种无需手动处理即可实现所需行为的方法(毕竟,这就是使用导航组件的关键所在)。有办法吗?

此外,我想在Android的材质设计中实现所需的行为吗?我的理解是,但是我在材料设计文档中找不到它。我尝试了几个应用程序,但看到了不同的行为(Twitter,地图和gmail不会退出该应用程序,但是任务或保持运行状态),所以我认为这两种行为都是可以接受的。

1 个答案:

答案 0 :(得分:0)

Principles of Navigation是由Google的Material和Android UX团队专门构建的,应作为应用程序的设计方式,以防止混淆后退按钮的功能:

  

此[开始]目的地也是用户在按“后退”按钮后返回启动器时看到的最后一个屏幕。

这可确保用户知道在应用程序的任何其他屏幕上时,后退按钮都不会将他们踢出应用程序。相反,该开始目标是向用户发布的路标,按下系统后退按钮 将其踢回到启动器。

因此,绝对可以预期的是,在使用NavigationUI帮助器时,您将始终通过图形的起始位置(即A屏幕)退出。

导航有一个单独的概念,称为top level destinations,它仅控制是否显示应用程序栏上的向上箭头。从用户的角度来看,这允许多个顶级目标(例如A,B和C)出现在同一层次结构上,同时仍与系统后向匹配通过起始目标退出的原理。