android studio底部导航栏

实现底部导航栏切换

将java文件return的xml文件赋值给页面FrameLayout控件
java文件BottomNavigationView,监听器setOnNavigationItemSelectedListener
MainActivity.java代码
复制代码
package com.example.myapplication;

import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;


import com.google.android.material.bottomnavigation.BottomNavigationView;

public class MainActivity extends AppCompatActivity {
    private BottomNavigationView bottomNavigationView;

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

        bottomNavigationView = findViewById(R.id.bottom_navigation);

        // 默认显示首页
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.frame_layout, new HomeFragment())
                .commit();

        // 设置切换监听
        bottomNavigationView.setOnNavigationItemSelectedListener(item -> {
            Fragment selectedFragment;
            switch (item.getItemId()) {
                case R.id.nav_search:
                    selectedFragment = new SearchFragment();
                    break;
                case R.id.nav_profile:
                    selectedFragment = new ProfileFragment();
                    break;
                case R.id.nav_home:
                default:
                    selectedFragment = new HomeFragment();
                    break;
            }

            getSupportFragmentManager().beginTransaction()
                    .replace(R.id.frame_layout, selectedFragment)
                    .commit();
            return true;
        });
    }
}
复制代码
HomeFragment.java代码:
复制代码
package com.example.myapplication;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import java.util.zip.Inflater;

public class HomeFragment extends Fragment {
    private TextView homeText;
    private Button updateButton;
    public View onCreateView(@NonNull LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {

        // 加载布局文件
        View view = inflater.inflate(R.layout.fragment_home, container, false);

        // 获取控件
        homeText = view.findViewById(R.id.home_text);
        updateButton = view.findViewById(R.id.update_button);

        // 设置按钮点击事件
        updateButton.setOnClickListener(v -> {
            homeText.setText("文字已更新!");
        });

        return view;
    }
}
复制代码
ProfileFragment.java代码:
复制代码
package com.example.myapplication;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class ProfileFragment extends Fragment {
    public View onCreateView(@NonNull LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_home, container, false);
    }
}
复制代码
SearchFragment.java代码:
复制代码
package com.example.myapplication;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class SearchFragment extends Fragment {
    public View onCreateView(@NonNull LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_search, container, false);
    }
}
复制代码
activity_main4.xml代码:
复制代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- 用于切换内容的 Fragment 容器 -->
    <FrameLayout
        android:id="@+id/frame_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@id/bottom_navigation"/>

    <!-- 底部导航栏 -->
    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:menu="@menu/bottom_nav_menu"/>
</RelativeLayout>
复制代码
fragment_home.xml代码:
复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="16dp">

<TextView
    android:id="@+id/home_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="这是首页"
    android:textSize="24sp"
    android:padding="16dp" />

<Button
    android:id="@+id/update_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="点我更新文字" />
</LinearLayout>
复制代码
fragment_search.xml代码:
复制代码
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:text="HOME 1"
    android:textSize="30sp" />

在resources/menu/bottom_nav_menu.xml代码如下:

复制代码
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/nav_home"
        android:title="首页"
        android:icon="@android:drawable/ic_menu_view" />
    <item
        android:id="@+id/nav_search"
        android:title="搜索"
        android:icon="@android:drawable/ic_menu_search" />
    <item
        android:id="@+id/nav_profile"
        android:title="我的"
        android:icon="@android:drawable/ic_menu_myplaces" />
</menu>

运行结果:

相关推荐
风往哪边走5 分钟前
Media3在线本地视频播放器
android
激昂网络9 分钟前
android kernel代码 common-android13-5.15 下载 编译
android·大数据·elasticsearch
Monkey-旭9 分钟前
Android 人脸识别技术全解析
android·android 人脸识别·ml kit 实战·活体检测技术·人脸识别性能优化·人脸考勤系统·移动端人脸特征提取
vivo互联网技术1 小时前
桌面挂件不能承受之重——GIF
android·gif加载·桌面挂件
JulyYu2 小时前
Android系统保存重名文件后引发的异常解决
android·操作系统·源码
叽哥2 小时前
Kotlin学习第 2 课:Kotlin 基础语法:掌握变量、数据类型与运算符
android·kotlin·app
tangweiguo030519872 小时前
Android原生(Kotlin)与Flutter混合开发 - 设备控制与状态同步解决方案
android·flutter
安卓开发者4 小时前
驾驭复杂表单:用 RxJava 实现响应式表单处理
android·rxjava
一笑的小酒馆4 小时前
Android使用Compose实现简单微信朋友圈
android