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>

运行结果:

相关推荐
vortex53 分钟前
谷歌黑客语法挖掘 SQL 注入漏洞
android·数据库·sql
-指短琴长-3 小时前
MySQL快速入门——基本查询(下)
android·mysql·adb
stevenzqzq4 小时前
android lambda回调
android
谢娘蓝桥5 小时前
Mac 安装 Xcode 及qt 环境安装
ide·macos·xcode
方知我5 小时前
使用VSCode进行SSH远程连接时无法与xxx建立连接
ide·vscode·ssh
重生之我要当编程大佬6 小时前
关于打不开pycharm的解决方法(一)
ide·python·pycharm
林北北的霸霸7 小时前
django初识与安装
android·mysql·adb
WarPigs8 小时前
Visual Studio笔记
ide·笔记·visual studio
Java 码农8 小时前
MySQL EXPLAIN 详解与优化指南
android·mysql·adb
仟濹8 小时前
IDEA 软件下载 + 安装 | 操作步骤
java·ide·intellij-idea