具有持久 BottomNavigationView 的片段或活动
Fragments or Activities with persistent BottomNavigationView
我目前一直在将我的 BottomNavigationView 实现为 4 个菜单项,方法是将 xml 代码添加到不同菜单项的 4 个活动中的每一个。 4 个活动中的每一个也都具有相同的 BottomNavigationView。但是,每次我按下 bottomNavigationView 上的不同按钮时,BottomNavigationView 都会随着 activity 的变化而刷新。那么,我应该将 Fragments 还是 Activity 与 BottomNavigationView 一起使用?我进行的 4 个活动中的每一个都没有关联。
我正在使用 BottomNavigationViewEx 库,但这不会改变任何内容。这是 4 个活动之间的共同 XML:
<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
android:id="@+id/bottom_navigation_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
如果底部菜单对于所有 4 个屏幕都是相同的,那么可以使用 Fragments 而不是 Activity.. 它会给你更多的灵活性和更容易维护
您可以使用 ViewPager 来处理您的片段,或者使用 FragmentTransaction 和 FrameLayout 来显示您的片段。
我自己对此做了很多研究,试图找到一个好的答案,因为我通常会将片段与一个 activity 一起使用,但是由于片段更复杂,因此使用起来可能会非常棘手循环,与活动相比。因此,必须处理许多源于碎片复杂生命周期的问题是很常见的。
所以我在想,如果您可以使用底部导航将每个片段变成自己的 activity 会怎么样。然后通过使用 activity 转换并使底部导航成为活动之间的共享元素来保持底部导航到位,这样页面上的其他所有内容都可以执行您想要的任何自定义动画。下面是文档的一些 links 和我发现的一个示例 repo 来证明这一点。
https://android.jlelse.eu/android-material-design-activity-transition-55de706ab967
https://developer.android.com/training/material/animations.html
https://github.com/ddekanski/BottomNavigationViewBetweenActivities
现在我不确定这对您是否重要的一件事是您是否希望用户能够在应用程序的页面之间滑动。如果您同意,那么我现在会坚持使用片段并使用 ViewPager
来完成此操作。滑动仍然可能只需要活动,我只是还没有探索如何去做,尽管这 link 可能是一个好的开始。
https://www.bignerdranch.com/blog/viewpager-without-fragments/
如果您选择使用片段,这也是一个很棒的教程,涵盖了您可能想了解的有关底部导航的所有内容。
https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f
我目前一直在将我的 BottomNavigationView 实现为 4 个菜单项,方法是将 xml 代码添加到不同菜单项的 4 个活动中的每一个。 4 个活动中的每一个也都具有相同的 BottomNavigationView。但是,每次我按下 bottomNavigationView 上的不同按钮时,BottomNavigationView 都会随着 activity 的变化而刷新。那么,我应该将 Fragments 还是 Activity 与 BottomNavigationView 一起使用?我进行的 4 个活动中的每一个都没有关联。
我正在使用 BottomNavigationViewEx 库,但这不会改变任何内容。这是 4 个活动之间的共同 XML:
<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
android:id="@+id/bottom_navigation_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
如果底部菜单对于所有 4 个屏幕都是相同的,那么可以使用 Fragments 而不是 Activity.. 它会给你更多的灵活性和更容易维护
您可以使用 ViewPager 来处理您的片段,或者使用 FragmentTransaction 和 FrameLayout 来显示您的片段。
我自己对此做了很多研究,试图找到一个好的答案,因为我通常会将片段与一个 activity 一起使用,但是由于片段更复杂,因此使用起来可能会非常棘手循环,与活动相比。因此,必须处理许多源于碎片复杂生命周期的问题是很常见的。
所以我在想,如果您可以使用底部导航将每个片段变成自己的 activity 会怎么样。然后通过使用 activity 转换并使底部导航成为活动之间的共享元素来保持底部导航到位,这样页面上的其他所有内容都可以执行您想要的任何自定义动画。下面是文档的一些 links 和我发现的一个示例 repo 来证明这一点。
https://android.jlelse.eu/android-material-design-activity-transition-55de706ab967 https://developer.android.com/training/material/animations.html https://github.com/ddekanski/BottomNavigationViewBetweenActivities
现在我不确定这对您是否重要的一件事是您是否希望用户能够在应用程序的页面之间滑动。如果您同意,那么我现在会坚持使用片段并使用 ViewPager
来完成此操作。滑动仍然可能只需要活动,我只是还没有探索如何去做,尽管这 link 可能是一个好的开始。
https://www.bignerdranch.com/blog/viewpager-without-fragments/
如果您选择使用片段,这也是一个很棒的教程,涵盖了您可能想了解的有关底部导航的所有内容。
https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f