android - 如何制作一个深度片段以在屏幕上使用喷气背包导航和 BottomNavigationView 占据整个屏幕?
问题描述
我在https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample研究了谷歌示例。它的工作原理如下:
但我需要关于片段来占据整个屏幕。最佳实践是什么?
我试过这个:
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.root_activity,Detail())?.addToBackStack("About")?.commit()
得到这个:
activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/root_activity"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.android.navigationadvancedsample.MainActivity">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_nav"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:menu="@menu/bottom_nav"/>
我可以设置activity?.findViewById<BottomNavigationView>(R.id.bottom_nav)?.visibility=View.GONE
oractivity?.findViewById<BottomNavigationView>(R.id.bottom_nav)?.visibility=View.INVISIBLE
但是当它回来时,它看起来像这样,我认为这不是好方法:
谢谢!!
解决方案
您必须切换 BottomNavigationView 的可见性,如下所示:
NavController.OnDestinationChangedListener destinationChangedListener = new NavController.OnDestinationChangedListener() {
@Override
public void onDestinationChanged(@NonNull NavController controller, @NonNull NavDestination destination, @Nullable Bundle arguments) {
if(destination.getId() == R.id.navigation_notifications){
navView.setVisibility(View.GONE);
}else{
navView.setVisibility(View.VISIBLE);
}
}
};
navController.addOnDestinationChangedListener(destinationChangedListener);
推荐阅读
- .net - 如何将 Visual Studio 安装到可移动驱动器?
- spring-boot - 使用 JSTL 标签连接两个变量以检查空条件
- c - 重复的输出值
- redis - 我可以在我的 DDEV 容器中使用 Redis 吗?
- python-3.x - 现在如何安装 Visual Studio 2015 PlatformSDK?
- gcc - 16字节NEON操作数的gcc arm内联汇编器%e0和%f0操作数修饰符?
- qt - 从 QGridLayout 中删除小部件
- qt - 表格不显示
- mybatis - mybatis : 很可能既没有指定 Result Type 也没有指定 Result Map
- vba - 随着报告的增长,代码变慢