当前位置: 首页 > ds >正文

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;@Overrideprotected 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 容器 --><FrameLayoutandroid: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.BottomNavigationViewandroid: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"><TextViewandroid:id="@+id/home_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="这是首页"android:textSize="24sp"android:padding="16dp" /><Buttonandroid: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"><itemandroid:id="@+id/nav_home"android:title="首页"android:icon="@android:drawable/ic_menu_view" /><itemandroid:id="@+id/nav_search"android:title="搜索"android:icon="@android:drawable/ic_menu_search" /><itemandroid:id="@+id/nav_profile"android:title="我的"android:icon="@android:drawable/ic_menu_myplaces" />
</menu>

运行结果:

http://www.xdnf.cn/news/13584.html

相关文章:

  • Windows 上安装 devsidecar 后,使用 WSL ubuntu ssl 报错
  • redisson锁的可重入、可重试、超时续约原理详解
  • npm包 本地测试流程
  • 软件测试之单元测试详解
  • 2025年5月一区SCI-状态优化算法Status-based Optimization-附Matlab免费代码
  • 闸门远程控制系统的主要功能有哪些?
  • LeetCode-多语言实现冒泡排序以及算法优化改进
  • 数据可视化新姿势:Altair的声明式魔法
  • Ubuntu+k3s+karmada离线安装部署说明
  • shell正则表达式
  • GFS分布式文件系统
  • 汽车电子行业的高效研发利器——全星研发项目管理APQP软件系统
  • 中国汽车启动电池市场深度剖析:现状、趋势与展望
  • Linux 查看两个主机之间时间是否同步 - clockdiff命令详解
  • 前端面试六之axios
  • 408考研逐题详解:2009年第38题
  • 【Kubernetes】架构与原理:核心概念、组件协同及容器化部署解析
  • 【考研数学:高数6】一元函数微分学的应用(二)——中值定理、微分等式和微分不等式
  • 鼠标右键添加新建某种文件的方法
  • Go并发模型与模式:context 上下文控制
  • 01.pycharm整合conda
  • 华为OD最新机试真题-对称美学-OD统一考试(B卷)
  • WinForm中实现Adobe PDF Reader实现旋转PDF功能
  • opencv vs2020正确的环境配置
  • 《HarmonyOSNext终极UIAbility手册:从启动模式到页面跳转,一网打尽!》
  • 菌菇食用攻略:从营养解析到安全指南,解锁科学食菌
  • 【JavaEE】-- HTTPS
  • 【Web】腾讯云 COS 静态网站部署与自定义域名 HTTPS 全流程
  • 【C++】来学习使用set和map吧
  • Python毕业设计226—基于python+爬虫+html的豆瓣影视数据可视化系统(源代码+数据库+万字论文)