首页 > 解决方案 > 覆盖底部导航并顺利加载的片段

问题描述

我的应用程序使用与 NavController 绑定的底部导航。我想加载一个在我的应用程序中创建新项目的片段,所以我希望片段占据底部导航使用的屏幕部分。我正在尝试使我的应用程序与 Google 的应用程序一致,因此我使用了底部的快速输入动画。

但是,默认情况下,NavController 会加载到位于 BottomNavigationView 上方的 NavHostFragment 中,因此底部导航会与任何片段一起显示。我尝试使用 Google 建议的方法来侦听导航事件。然而,这会将 BottomNavigationView 设置为在片段导航发生之前启动,将当前片段向下移动,从而对导航产生口吃效果。

更糟糕的是,目标片段的复杂性似乎几乎没有,新片段的布局需要一点时间来膨胀,所以 BottomNavigationView 消失了,应用程序在膨胀时暂停了一会儿,然后它也是动画迟到了,片段结结巴巴地出现了。

什么是正确的方法?

标签: javaandroidandroid-studioandroid-layoutandroid-fragments

解决方案


Fragments尝试设置每个从中fragment加载另一个(创建新项目)的退出转换,如下所示:
setExitTransition(new Hold());
基本上,这会保留当前片段,直到加载下一个片段。
注意:如果Hold在当前实现中找不到类,则可能需要使用MaterialComponents.
implementation 'com.google.android.material:material:1.3.0-alpha01'


推荐阅读