【问题标题】:Fragment that covers bottom navigation and loads smoothly覆盖底部导航并顺利加载的片段
【发布时间】:2020-07-02 20:59:50
【问题描述】:

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

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

更糟糕的是,目标片段的复杂性似乎几乎没有,新片段的布局需要一点时间来膨胀,所以底部导航视图消失了,应用程序在膨胀时暂停片刻,然后动画太迟了,片段结结巴巴地出现了。

什么是正确的方法?

【问题讨论】:

    标签: java android android-studio android-layout android-fragments


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多