java - 覆盖底部导航并顺利加载的片段
问题描述
我的应用程序使用与 NavController 绑定的底部导航。我想加载一个在我的应用程序中创建新项目的片段,所以我希望片段占据底部导航使用的屏幕部分。我正在尝试使我的应用程序与 Google 的应用程序一致,因此我使用了底部的快速输入动画。
但是,默认情况下,NavController 会加载到位于 BottomNavigationView 上方的 NavHostFragment 中,因此底部导航会与任何片段一起显示。我尝试使用 Google 建议的方法来侦听导航事件。然而,这会将 BottomNavigationView 设置为在片段导航发生之前启动,将当前片段向下移动,从而对导航产生口吃效果。
更糟糕的是,目标片段的复杂性似乎几乎没有,新片段的布局需要一点时间来膨胀,所以 BottomNavigationView 消失了,应用程序在膨胀时暂停了一会儿,然后它也是动画迟到了,片段结结巴巴地出现了。
什么是正确的方法?
解决方案
Fragments
尝试设置每个从中fragment
加载另一个(创建新项目)的退出转换,如下所示:
setExitTransition(new Hold());
基本上,这会保留当前片段,直到加载下一个片段。
注意:如果Hold
在当前实现中找不到类,则可能需要使用MaterialComponents
.
implementation 'com.google.android.material:material:1.3.0-alpha01'
推荐阅读
- java - 解决 spark core 和 azure key vault 依赖项之间的番石榴冲突
- flutter - Flutter App开发中的VS Code调用堆栈行
- neo4j - 在查询结果中分离匹配节点
- python - 为什么不能直接等待 python 协程对象?
- oracle - Oracle CASE 语句优化
- java - 如何删除mysql数据库存储错误?
- autocloseable - ActiveMQManagedConnection (EAP/AMQ) 是否支持自动关闭?
- c - Qemu 如何模拟 PCIe 设备?
- git - 我可以为我的 github pages 站点创建一个子域吗?
- javascript - CCS_ERROR 请求来自未注册的主机