Regarding the use of the bottom navigation bar in all views, I think we should give it a second thought. I think it goes against Google guidelines, and can throw some navigation issues (all that I am talking is about user experience, but it can be problematic as well from the programming side). I’ll try to argue the best (and shortest) I can why we should only keep the navigation bar in the top-level views
Different quotes from the guidelines and Google blog:
- Bottom navigation bar destinations should be of equal importance > destinations are top-level and disconnected from each other.
- Each destination should be a discrete parent, not a sibling of the other destinations.
- When the app navigates to a destination’s top-level screen, any prior user interactions and temporary screen states are reset, such as scroll position, tab selection, and in-line search.
- Don’t use bottom actions to give users controls that act on elements in the current screen or app mode. If you need to provide this, use a toolbar action instead.
Besides sticking to the guidelines, I see two major issues:
Consistency
If the bottom bar is displayed persistently, there is a problem with the outcome of that button. It will be the same button in the same position, but depending on where we are in the hierarchy of the app, it will behave differently… this is confusing in terms of user experience, one user interaction should always present the same outcome.
Also, how can a user access now the global scorecard? One action hides the other.
Navigation
Another thing we need to keep in mind is that in Android, there are two ways to navigate through the views: using in-app navigation elements and the back button. We need to consider what would happen in each scenario when the back button is pressed. The back button usually means to go back (up) in the app views hierarchy, but what happens if we expose a child view at the same state as a parent view?
Let me explain it with an example (there are more scenarios like this one, it is just one of them):
- We are in the home screen, viewing the course list (home option active)
- We select a course and go to the course index (home option active?)
- We press the bottom scorecard option, taking us to the course scorecard (scorecard option active). Having the button work this way (being persistent and only changing the inner content), it gives a sensation that the course index and course scorecard are at the same level of hierarchy
- So now, what happens if we press the back button? Should it takes to the course index or to its parent view (course list?). This gets even more confusing if we are inside a course activity…
Also, inside a course scorecard, where should the courses bottom action takes us? To the list of courses? to the course index of the course scorecard we are visiting?
When we have to answer this questions making decisions and the user cannot tell beforehand where that action will take her, that’s a navigation issue that should be avoided.
So my recommendation is to keep the bottom navigation only for the three top-level destinations, and hide it when we are inside a course or any other child view. Or, if we want to keep it persistently, make its outcome consistent through the app: always take to the global destination (global points, scorecard, ect) - but this can also be confusing for the user.
I hope I’ve explained myself, let me know what you think!
Sources: