底部导航模板BottomNavigation的实现

底部导航模板BottomNavigation的实现

Step1_准备资源

1.新建Empty工程,在res目录下创建三个图标:res—New—Vector Asset
ic_looks_one_black_24dp.xml
ic_looks_two_black_24dp.xml
ic_looks_3_black_24dp.xml

2.新建三个Fragment(with ViewModel):
FirstFragment&FirstViewModel
SecondFragment&SecondViewModel
ThirdFragment&ThirdViewModel

3.创建menu.xml:res—New—Android Resource File
Resource type:Menu
File name:menu.xml

4.在menu里添加3个Menu item并分别设置title、icon、id:
title:旋转
icon:ic_looks_one_black_24dp.xml
id:firstFragment

title:缩放
icon:ic_looks_two_black_24dp.xml
id:secondFragment

title:移动
icon:ic_looks_3_black_24dp.xml
id:thirdFragment

5.创建navigation.xml:res—New—Android Resource File
Resource type:Navigation
File name:navigation.xml
!!该步骤需要添加依赖!!

在这里插入图片描述
6.点击以上图标添加3个Fragment对应的Destination
注意Navigation中的3个Destination的ID需和对应的Fragment保持一致!
label修改为对应的:旋转、缩放、移动
在这里插入图片描述

Step2_关联资源

1.在activity_main.xml的ConstraintLayout里添加Containers:BottomNavigationView,将它的menu属性与之前创建的menu.xml进行关联。

2.设置BottomNavigationView的高度为:wrap_content,通过Constraint设置使其保持在页面底部。

3.在ConstraintLayout里添加Containers:NavHostFragment,选择之前设置的navigation.xml并通过Constraint设置使其保持在BottomNavigationView之上,设置高度为0dp(match constraint)

此时的activity_main.xml的布局预览:
在这里插入图片描述

Step3_装配组件

MainActivity:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    BottomNavigationView bottomNavigationView  = findViewById(R.id.bottomNavigationView);
    NavController navController = Navigation.findNavController(this,R.id.fragment);
    AppBarConfiguration configuration = new AppBarConfiguration.Builder(bottomNavigationView.getMenu()).build();
    NavigationUI.setupActionBarWithNavController(this,navController,configuration);
    NavigationUI.setupWithNavController(bottomNavigationView,navController);
 }
}

Step4_运行结果

在这里插入图片描述
点击底部导航栏可切换Fragment:
在这里插入图片描述

发布了20 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/BLU_111/article/details/103257206
今日推荐