android RadioButton + ViewPager+fragment
RadioGroup + viewpage + fragment 组合显示导航栏
1、首先主界面的布局控件就是RadioGroup + viewpage
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.mmsx.MainActivity"><androidx.viewpager.widget.ViewPagerandroid:id="@+id/main_viewpager"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1" /><RadioGroupandroid:id="@+id/rg"android:layout_width="match_parent"android:layout_height="60dp"android:layout_alignParentBottom="true"android:background="#FDFDFD"android:gravity="center"android:orientation="horizontal"><RadioButtonandroid:id="@+id/rb_wallet"style="@style/main_rb_style"android:drawableTop="@drawable/button_style_1" /><RadioButtonandroid:id="@+id/rb_treasure"style="@style/main_rb_style"android:drawableTop="@drawable/button_style_2" /><RadioButtonandroid:id="@+id/rb_home"style="@style/main_rb_style"android:drawableTop="@drawable/button_style_3" /><RadioButtonandroid:id="@+id/rb_otc"style="@style/main_rb_style"android:drawableTop="@drawable/button_style_4" />/></RadioGroup>
</LinearLayout>
这样式可以统一定义好style样式,直接调用
图标的样式
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/home" android:state_checked="true" />
<item android:drawable="@mipmap/home_1" android:state_checked="false" />
</selector>
2、MainActivity实现
首先写一个fragment适配器
public class MainFragmentPagerAdapter extends FragmentPagerAdapter {List<Fragment> mFragmentList;public MainFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {super(fm);mFragmentList=list;}@Overridepublic Fragment getItem(int i) {return mFragmentList.get(i);}@Overridepublic int getCount() {return mFragmentList!=null?mFragmentList.size():0;}@Overridepublic void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
// super.destroyItem(container, position, object);}
}
MainActivity代码实现,实现滑动切换,点击导航栏切换。
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {List<Fragment> fragmentList = new ArrayList<>();MainFragmentPagerAdapter adapter;ViewPager viewPager;RadioGroup rg;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//初始化控件initView();//绑定RadioButtoninitViewPager();}private void initView() {viewPager = findViewById(R.id.main_viewpager);rg = findViewById(R.id.rg);rg.setOnCheckedChangeListener(this);rg.getChildAt(0).performClick();}private void initViewPager() {//添加碎片fragmentList.add(new HomeFragment());fragmentList.add(new MessageFragment());fragmentList.add(new CustomFragment());fragmentList.add(new LoginFragment());adapter = new MainFragmentPagerAdapter(getSupportFragmentManager(), fragmentList);viewPager.setAdapter(adapter);viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {@Overridepublic void onPageScrolled(int i, float v, int i1) {}@Overridepublic void onPageSelected(int i) {switch (i) {case 0:rg.check(R.id.rb_wallet);break;case 1:rg.check(R.id.rb_treasure);break;case 2:rg.check(R.id.rb_home);break;case 3:rg.check(R.id.rb_otc);break;}}@Overridepublic void onPageScrollStateChanged(int i) {}});}@Overridepublic void onCheckedChanged(RadioGroup radioGroup, int checkedId) {switch (checkedId) {case R.id.rb_wallet:viewPager.setCurrentItem(0);break;case R.id.rb_treasure:viewPager.setCurrentItem(1);break;case R.id.rb_home:viewPager.setCurrentItem(2);break;case R.id.rb_otc:viewPager.setCurrentItem(3);break;}}
}
创建四个fragment代码这里就不贴了。会有点多。四个fragment还有功能实现。
看一下项目结构图

具体实现的界面如下




相关文章:
android RadioButton + ViewPager+fragment
RadioGroup viewpage fragment 组合显示导航栏 1、首先主界面的布局控件就是RadioGroup viewpage <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools…...
给机器装上“脑子”—— 一文带你玩转机器学习
目录 一、引言:AI浪潮中的明星——机器学习 二、机器学习的定义与概念 1. 机器学习与传统编程的区别 2. 机器学习的主要任务类型 3. 机器学习的重要组成部分 三、机器学习的工作原理:从数据到模型的魔法之旅 1. 数据收集与预处理——数据是机器的…...
论文笔记:是什么让多模态学习变得困难?
整理了What Makes Training Multi-modal Classification Networks Hard? 论文的阅读笔记 背景方法OGR基于最小化OGR的多监督信号混合在实践中的应用 实验 背景 直观上,多模态网络接收更多的信息,因此它应该匹配或优于其单峰网络。然而,最好的…...
ChatGPT Search开放:实时多模态搜索新体验
点击访问 chatTools 免费体验GPT最新模型,包括o1推理模型、GPT4o、Claude、Gemini等模型! ChatGPT Search:功能亮点解析 本次更新的ChatGPT Search带来了多项令人瞩目的功能,使其在搜索引擎市场中更具竞争力。 1. 高级语音模式&…...
Centos7.9 离线安装docker
实验环境: [root192 ~]# cat /etc/system-release CentOS Linux release 7.9.2009 (Core)下载二进制压缩包 a. 官网下载地址: https://download.docker.com/linux/static/stable/x86_64/b. 阿里云下载地址 https://mirrors.aliyun.com/docker-ce/lin…...
C语言函数在调用过程中具体是怎么和栈互动的?
从栈开始的一场C语言探险记 —— C语言函数是如何与栈"共舞"的。 栈的舞步解析 通过一个简单的例子来看看这支"舞蹈": int add(int a, int b) {int result a b;return result; }int main() {int x 10;int y 20;int sum add(x, y);retur…...
【Java中常见的异常及其处理方式】
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 字符串修改的实现——StringBuilder和StringBuffer异常常见异常①算数异常②数组越界异常③空指针异…...
如何更新项目中的 npm 或 Yarn 依赖包至最新版本
要升级 package.json 文件中列出的包,你可以使用 npm(Node Package Manager)或 yarn。以下是两种工具的命令来更新你的依赖项: 使用 npm 更新所有包到最新版本 npm update如果你想将所有依赖项更新到其各自最新的大版本…...
SpringBoot3整合FastJSON2如何配置configureMessageConverters
在 Spring Boot 3 中整合 FastJSON 2 主要涉及到以下几个步骤,包括添加依赖、配置 FastJSON 作为 JSON 处理器等。下面是详细的步骤: 1. 添加依赖 首先,你需要在你的 pom.xml 文件中添加 FastJSON 2 的依赖。以下是 Maven 依赖的示例&#…...
《Vue3实战教程》2:Vue3快速上手
如果您有疑问,请观看视频教程《Vue3实战教程》 快速上手 线上尝试 Vue 想要快速体验 Vue,你可以直接试试我们的演练场。 如果你更喜欢不用任何构建的原始 HTML,可以使用 JSFiddle 入门。 如果你已经比较熟悉 Node.js 和构建工具等概念…...
ubuntu 24.04.1安装FTP流程
1、安装vsftpd: sudo apt update sudo apt install vsftpd 2、安装后重启查看vsftpd状态 sudo systemctl status vsftpd 输出如下所示,表明vsftpd服务处于活动状态并正在运行: * vsftpd.service - vsftpd FTP server Loaded: loaded (/…...
多功能护照阅读器港澳通行证阅读机RS232串口主动输出协议,支持和单片机/Linux对接使用
此护照阅读器支持护照、电子芯片护照、港澳通行证、台湾通行证,和串口的被动的方式不一样。此护照阅读器通电后,自动读卡,串口输出,软件只需要去串口监听数据即可,例如用串口助手就可以收到读卡信息。 非常适用于单片…...
5个用于构建Web应用程序的Go Web框架
探索高效Web开发的顶级Go框架 Go(或称为Golang)以其简洁性、高效性和出色的标准库而闻名。然而,有几个流行的Go Web框架和库为构建Web应用程序提供了额外的功能。以下是五个最值得注意的Go框架: 1. Gin: Gin是一个高…...
Qt中的异步相关类
Qt中的异步相关类 今天在学习别人的项目时,看到别人包含了QFuture类,我没有见过,于是记录一下。 直接在AI助手中搜索QFuture,得到的时Qt中异步相关的类。于是直接查询一下Qt异步中相关的类。 在Qt中,异步编程是一个重要的概念&…...
浅谈仓颉语言的优劣
仓颉语言,作为华为自研的新一代编程语言,以其高效、安全、现代化的特点,引起了广泛的关注。 仓颉语言的优势 高效并发 仓颉语言的一大亮点是其轻松并发的能力。它实现了轻量化用户态线程和并发对象库,使得高效并发变得轻松。仓颉…...
Linux 显示系统活动进程状态命令 ps 详细介绍
Linux 和类 Unix 操作系统中的 ps(Process Status)命令用于显示当前系统中活动进程状态的命令。它提供了关于系统中正在运行的进程的详细信息,如进程 ID(PID)、父进程 ID(PPID)、运行时间、使用…...
scala中正则表达式的使用
正则表达式: 基本概念 在 Scala 中,正则表达式是用于处理文本模式匹配的强大工具。它通过java.util.regex.Pattern和java.util.regex.Matcher这两个 Java 类来实现(因为 Scala 运行在 Java 虚拟机上,可以无缝使用 Java 类库&…...
数据分析和AI丨知识图谱,AI革命中数据集成和模型构建的关键推动者
人工智能(AI)已经吸引了数据科学家、技术领导者以及任何使用数据进行商业决策者的兴趣。绝大多数企业都希望利用人工智能技术来增强洞察力和生产力,而对于这些企业而言,数据集的质量差成为了最主要的障碍。 数据源需要进行清洗且明…...
cocos creator制作2dTop-down游戏(虚拟摇杆、地图加载)
《不被遗忘的时光》第一期 1、游戏的形式:横板;2d的顶视角(Top-down);射击;ARPG;益智解谜。 2、画风:类似手游《伊洛纳》。 3、故事背景:以中元节的爷孙阴阳交流作为故…...
SQL Server 批量插入数据的方式汇总及优缺点分析
在 SQL Server 中,批量插入数据是非常常见的操作,尤其是在需要导入大量数据时。以下是几种常用的批量插入数据的方式: 1. 使用 INSERT INTO ... VALUES • 特点:适用于少量数据插入。 • 优点:简单易用。 • 缺点:不适合大量数据插入,性能较差。 • 示例:…...
避坑指南:YOLOv8+PaddleOCR车牌识别中,那些让你识别率暴跌的细节
避坑指南:YOLOv8PaddleOCR车牌识别中那些让你识别率暴跌的细节 车牌识别系统在智慧交通、安防监控等领域的应用越来越广泛,但很多工程师在部署YOLOv8PaddleOCR方案时,明明按照教程一步步操作,实际识别效果却远不如预期。本文将揭…...
AI运维管理与安全防护设备功率MOSFET选型方案——高效、可靠与智能驱动系统设计指南
随着智能化运维与主动安全防护需求的爆发式增长,AI边缘计算节点、智能传感器与安全执行单元已成为现代基础设施管理的核心。其电源管理与信号驱动系统作为设备可靠运行与实时响应的基石,直接决定了系统的能效、稳定性及防护等级。功率MOSFET作为该系统中…...
RDMA设计64:数据吞吐量性能测试分析
本博文主要交流设计思路,在本博客已给出相关博文约190篇,希望对初学者有用。 注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP 设计。 这里将在基于 XCZU47DR FPGA 核心的开发板上对 RoCE v2 高速传输系统进行数据吞吐量、包吞吐量及传…...
星露谷物语SMAPI模组加载器:终极安装与使用完全指南
星露谷物语SMAPI模组加载器:终极安装与使用完全指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 想要为《星露谷物语》安装模组来扩展游戏体验吗?SMAPI模组加载器是官方推…...
SAP-FICO LSMW实战:批量导入财务凭证与固定资产主数据(AS91)的完整指南
1. LSMW基础概念与适用场景 第一次接触LSMW这个工具时,我也被它复杂的界面吓到过。但用顺手后发现,这简直是SAP数据迁移的"瑞士军刀"。简单来说,LSMW(Legacy System Migration Workbench)是SAP系统内置的数…...
大模型开发:裸辞还是在职?算清这笔账,转型之路少走弯路!
文章探讨了在大模型开发转型过程中,裸辞与在职学习的利弊及适用人群。裸辞可集中时间快速学习,但经济压力大;在职学习有稳定收入,但时间碎片化,学习周期长。文章建议根据个人经济状况、技能基础和风险承受能力选择路径…...
7天掌握黑苹果安装:国光OpenCore配置终极指南
7天掌握黑苹果安装:国光OpenCore配置终极指南 【免费下载链接】Hackintosh 国光的黑苹果安装教程:手把手教你配置 OpenCore 项目地址: https://gitcode.com/gh_mirrors/hac/Hackintosh 想用普通电脑体验macOS的流畅与优雅吗?国光的黑苹…...
告别插件切换!一款满足你所有挖洞需求的浏览器插件助力高效挖洞
0x01 工具介绍 由于目前网上流通的插件功能都各有千秋,每个插件都有他自己的亮点,每次使用都得按场景去选择插件,为了能够有一款属于自己的完美插件,不用来回倒腾切换,由此GodEyes 诞生了。 它是一款可以帮助安全研究…...
Ostrakon-VL像素终端效果展示:8-bit风格UI下高精度OCR识别动图
Ostrakon-VL像素终端效果展示:8-bit风格UI下高精度OCR识别动图 1. 像素特工终端概览 在零售与餐饮行业的数字化转型浪潮中,我们开发了这款基于Ostrakon-VL-8B多模态大模型的Web交互终端。与传统工业级UI不同,这款终端采用了充满活力的8-bit…...
DP数组的容量要不要+1?
其实,dp 数组要不要 1,完全取决于 “DP数组”下标代表什么 。 简单来说,只有两种情况。我们结合“凑钱”题和经典的“爬楼梯”题来对比一下。📏 情况一:下标代表“金额/重量/容量”(需要 1) 场景…...
