基于Android移动应用开发,备忘录记事本APP底部导航栏实现(二)
本文介绍了Android开发中底部导航栏的实现方法。使用BottomNavigationView控件配合Fragment实现页面切换功能,开发环境为Android Studio+Java JDK11。关键技术点包括:1)BottomNavigationView的布局配置与菜单项定义;2)Fragment事务管理实现页面切换;3)底部导航栏的点击事件监听。通过activity_main.xml定义布
·
相关视频教程在某站上面(🔍浩宇软件开发)
1. 开发环境
- 开发工具:Androidstudio
- 开发语言:Java
- jdk版本:11+以上
2. 涉及到技术点
- 底部导航栏控件BottomNavigationView的使用
- BottomNavigationView的事件监听
- Fragment在Activity中如何使用
3. 代码实现过程
- 主页activity_main.xml布局
<RelativeLayout 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:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottomNavigationView" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigationView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemIconTint="@color/my_light_primary"
app:itemTextColor="@color/my_light_primary"
app:labelVisibilityMode="selected"
app:menu="@menu/navigation" />
</RelativeLayout>
- 在res下新建menu文件夹,然后在menu中创建navigation.xml,如下图所示

navigation.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/home"
android:icon="@drawable/baseline_feed_24"
android:title="首页" />
<item
android:id="@+id/search"
android:icon="@drawable/baseline_manage_search_24"
android:title="搜索" />
<item
android:id="@+id/mine"
android:icon="@drawable/baseline_account_circle_24"
android:title="我的" />
</menu>
- 主页面MainActivity.java
底部导航栏页面之间的切换是Fragment,所以需要创建好三个fragment,HomeFragment,SearchFragment,MineFragment
public class MainActivity extends BaseActivity {
private HomeFragment mHomeFragment;
private SearchFragment mSearchFragment;
private MineFragment mMineFragment;
private BottomNavigationView mBottomNavigationView;
@Override
protected int getLayoutResId() {
return R.layout.activity_main;
}
@Override
protected void initViews() {
mBottomNavigationView =findViewById(R.id.bottomNavigationView);
}
@Override
protected void setListener() {
mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
if (item.getItemId() ==R.id.home){
selectedFragment(0);
}else if (item.getItemId() ==R.id.search){
selectedFragment(1);
}else {
selectedFragment(2);
}
return true;
}
});
}
@Override
protected void initData() {
selectedFragment(0);
}
private void selectedFragment(int position) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
hideFragment(fragmentTransaction);
if (position == 0) {
if (mHomeFragment == null) {
mHomeFragment = new HomeFragment();
fragmentTransaction.add(R.id.content, mHomeFragment);
} else {
fragmentTransaction.show(mHomeFragment);
}
} else if (position == 1) {
if (mSearchFragment == null) {
mSearchFragment = new SearchFragment();
fragmentTransaction.add(R.id.content, mSearchFragment);
} else {
fragmentTransaction.show(mSearchFragment);
}
} else {
if (mMineFragment == null) {
mMineFragment = new MineFragment();
fragmentTransaction.add(R.id.content, mMineFragment);
} else {
fragmentTransaction.show(mMineFragment);
}
}
//一定要提交
fragmentTransaction.commit();
}
private void hideFragment(FragmentTransaction fragmentTransaction) {
if (mHomeFragment != null) {
fragmentTransaction.hide(mHomeFragment);
}
if (mSearchFragment != null) {
fragmentTransaction.hide(mSearchFragment);
}
if (mMineFragment != null) {
fragmentTransaction.hide(mMineFragment);
}
}
}
4. 运行效果图

5. 教程教学
更多推荐



所有评论(0)