利用RadioGroup + ViewPager + Fragment实现书签导航

使用ViewPager+Fragment+RadioGroup实现类似微信主界面 其实现在很多的应用都有类似的实现,最常用的或许就是微信了吧。先来看看效果图吧 当然这里只是拿了大众点评的图片,和微信的实现功能是一样的。微博也有类似的实现,但微博的实现简单点,用Fragment+RadioGroup就可以了,因为它不支持左右滑动界面。这里主要用到了ViewPager实现滑动,Fragment来表示各个界面,RadioGroup表示下方的四个选项。 对于下方的选项,有很 阅读详情

效果展示:
这里写图片描述
实现思路:

1.底部有多少个书签,就创建多少个Feagment。在drawable中绘制选择器selector,也就是底部的书签。
2.初始化数据:找到Fragment对象,Fragment fragmentA = new Fragment_A();把对象加入集合。
3.适配数据:创建一个类,继承FragmentPagerAdapter适配器,把Fragment管理器:getSupportFragmentManager(),数据集合传送过去。
4.把适配到的数据适配到ViewPager中进行展示。
5.监听RadioGroup的变化,当切换RadioBtton时,Fragment也会对应的切换的步骤:
a1 . 利用RadioGroup的setOnCheckedChangeListener来监听RadiBtton的变化
a2 . 利用RadioBtton的id来判断要点击的那个button。
a3 . viewPager.setCurrentItem(0);此方法用于将切换到viewpager的第几个页面(0位序号)。
a4 . 注意:a2中的id和a3中的第几个页面一定要和布局中的控件排序要一一对应。
也就是说布局中name标签放在了最左边,那么name标签对应的Fragment的一定要是ViewPager的第0个页面.
6. 监听ViewPager的变化,当滑动屏幕的Fragment时,RadioBtton也会相对应的切换的步骤:
a1 .利用 viewPager.addOnPageChangeListener方法来监听ViewPager的变化。
a2 . 重写该监听器的方法,在onPageSelected方法下进行回调信息。
a2.1:回调:因为ViewPager中Fragment的position和RadioBtton是一一对应的,
所有当ViewPager进行滑动时,RadioBtton也会相应的切换。
RadioButton radioButton = (RadioButton) radioGroup.getChildAt(position);
radioGroup.check(radioButton.getId());//通过该button的id找到该button,并选中该button。
代码展示:
1.MainActivity的Code:

public class RadioGroup_ViewPager_Fragment extends AppCompatActivity{
    private List<Fragment> list;
    private RadioGroup radioGroup;
    private ViewPager viewPager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.radiogroup_viewpager_fragment);
        viewPager = (ViewPager) findViewById(R.id.viewpager2);
        radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
        //监听RadioGroup的变化
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {
                switch (checkedId){
                    case  R.id.game:
                        viewPager.setCurrentItem(0);//此方法用于将切换到viewpager的第几个页面
                        break;
                    case  R.id.appgroup:
                        viewPager.setCurrentItem(1);//这4个id顺序和不能乱,要和布局中的顺序一样
                        break;
                    case  R.id.home:
                        viewPager.setCurrentItem(2);
                        break;
                    case  R.id.manager:
                        viewPager.setCurrentItem(3);
                        break;
                }
            }
        });
        //ViewPager的监听,当Viewpager页面改变时监听。
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }
            //当Viewpager页面改变时回调,返回值当前被选择的页面位置
            @Override
            public void onPageSelected(int position) {
            //获取传入参数(index 序号) 来获取子控件
                // ViewPager的position和RadioBtton的index是一一对应的。
                RadioButton radioButton = (RadioButton) radioGroup.getChildAt(position);//RadioGroup通过序号找到RaidoBtton
                radioGroup.check(radioButton.getId());
            }
            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });
        loadData();
        BaseFragmentPagerAdapter adapter = new BaseFragmentPagerAdapter(getSupportFragmentManager(),list);
        viewPager.setAdapter(adapter);
    }

        private void loadData() {
        list = new ArrayList<Fragment>();
        Fragment fragmentA = new Fragment_A();
        list.add(fragmentA);

        Fragment fragmentB = new Fragment_B();
        list.add(fragmentB);

        Fragment fragmentC = new Fragment_C();
        list.add(fragmentC);

        Fragment fragmentD = new Fragment_D();
        list.add(fragmentD);
    }
}

2.准备4个Fragment:

public class Fragment_A extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return  inflater.inflate(R.layout.a_fragmnet,container,false);

    }
}

3 .在drawable中绘制4个选择器selector,也就是底部的书签。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/bottombar_game_pressed" android:state_checked="true"/>
    <item android:drawable="@mipmap/bottombar_game_pressed" android:state_selected="true"/>
    <item android:drawable="@mipmap/bottombar_game_normal"/>
</selector>

4.FragmentPagerAdapter适配器的代码:

public class BaseFragmentPagerAdapter extends FragmentPagerAdapter {

    private List<Fragment> list;


    public BaseFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list=list;

    }

    @Override
    public Fragment getItem(int position) {

        return list.get(position);
    }

    @Override
    public int getCount() {

        return list.size();
    }

}
实现打开Android系统相册、照相机并实现照相,录像功能。 通过本篇博客,你将学到以下知识点: 1.学会如何打开Android系统中相册的图片,视频,并使用这些图片,视频。 2.学会如何打Android开照相机进行照相,录像,并使用这样图片和视频。 下面我将展示两种方法来实现这些需求,注意,以下代码要用真机测试才行。 效果展示先:一. 第一种方法: ①.想顺利的打开Android中的相册和照相机,首先我们要在清单中注册一些权限: <!--使用相机硬 阅读详情

相关推荐

使用SurfaceView播放视频,调节进度,滑动屏幕调节音量并显示音量。

效果展示: 首先在清单文件中注册: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> java代码: public class MainActivity extends AppCompatActivity implements SurfaceHolder.Callback { priv

用心去专研技术,用代码改变世界__ Mr.Wang 5150

21 ViewPager RadioGroup

结构 MainActivity.java package com.qf.day21_viewpagerfragmentrg_demo4; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.support.v4.app.Frag...

weixin_30414305的博客 97

安卓实现RadioGroup+Viewpager+Fragment底部导航栏和viewpager联动 DEMO下载

使用RadioGroup+Viewpager+Fragment实现底部菜单栏和viewpager页面联动. viewpager里是碎片 点击菜单栏viewpager滚动, 滑动viewpager底部菜单栏跟着滚动 有问题欢迎指出!

简单快速实现导航条(Viewpager+Fragment+Radiogroup)

每个应用几乎都逃不开导航条,导航条的制作方法有很多 1、TabActivity+TabHost(已经过期) 2、Fragment + RadioGroup 【必要时首选】 3、Fragment + ViewPager + RadioGroup自定义固定导航条 【推荐使用】 4、Fragment + ViewPager 带滑动导航条 【推荐使用】 5、Frag

下次时的博客 651

logisim计组实验八 乘法器

原理:点这里 有问题欢迎留言哦~ 文章目录五位阵列乘法器电路图时间延迟分析六位补码阵列乘法器五位无符号乘法流水线原理图电路图原码一位乘法器原理图电路图补码一位乘法器 五位阵列乘法器 电路图 此处注意:全加器FA的cout端是进位端而非输出端 使用硬件控制比循环累加的速度快得多。 但是存在串行进位链 改进版: 时间延迟分析 T是计算相加数的一级门延迟 3n–>2n 性能差别在1.5倍 ...

treblez's blog 2万+

Transformers在自动驾驶领域的应用(High-level like in scene)

Transformers uses global attention mechanism to capture long-range interaction information. Two core modules in Transformers are Self-Attention and Cross-Attention, which defined asAttn(Q,K,V)=softmax(QK⊤dk)VSelfAttn(X)=Attn(WQX,WKX,WVX)CrossAttn(X,Y)=Attn

qq_39337332的博客 1774

Fragment、ViewPager、ActionBar实现TAB导航条效果

 前言:         制作Tab书签导航条(书签选项卡)有多种方法: 【特别提示:】注意几种创建Tab书签导航中Fragment生命周期的变化。 1、TabActivity+TabHost(已经过期) 2、Fragment + FragmentTabHost(取代TabActivity,不建议使用) 3、Fragment + ActionBar                   ...

bobo的博客 403

微波传感器 - 从原理到实战,解锁非接触感知新维度

本文深入解析微波传感器的工作原理,重点阐述了其基于多普勒效应的非接触感知机制,并对比了红外、超声波等技术的优劣。通过树莓派Pico与RCWL-0516模块的实战案例,展示了如何构建区域入侵检测器,并探讨了微波传感器在智能家居、工业自动化及汽车电子等领域的广阔应用前景。

weixin_29306571的博客 223

利用Fragment + FragmentTabHost实现书签导航

效果展示: FragmentTabHost与RadioGroup的区别: * 1. FragmentTabHost的代码来说要少。 * 2. FragmentTabHost可扩展性要强。 * 缺点:Fragment界面只能通过书签切换,没有ViewPager不对说,直接上代码: 1.MainActiviry的代码:public class Fragment_FragmentTabHo

用心去专研技术,用代码改变世界__ Mr.Wang 776

Boost电路双闭环控制MATLAB仿真

通过电流内环控制,我们可以改变目标平均电流基准值的大小来闭环改变占空比,再改变输出电压与电路电流,直到电路电流达到基准电流才达到稳态。但是我们的基准电流依旧是外部提供的,下边的电压外环控制就是电路自己计算基准电流。

Fourglsl的博客 5845

智能安防摄像头埋点实践:用户行为与设备状态的闭环监控(含AI事件)

智能安防摄像头埋点闭环体系设计及应用实践 摘要: 本文系统阐述了智能安防摄像头埋点闭环体系的设计与实践。首先分析了传统埋点的不足及闭环埋点的价值,提出由用户行为埋点、设备状态埋点和AI事件埋点构成的三维埋点体系框架。详细介绍了闭环监控的四大流程:数据采集、汇聚清洗、分析建模和智能决策。通过误报优化、个性化策略等案例展示了AI事件闭环的实际应用价值,并探讨了隐私合规、性能优化等关键挑战的解决思路。最后展望了端侧AI增强、预测型埋点等未来发展趋势。该体系实现了从数据采集到业务决策的完整闭环,有效提升了AI模型性

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 1046

Android导航书签

1,TabHost+Activity 过时 2,ActionBar+Fragment 不建议使用 3,ActionBar+Fragment +ViewPager 不建议使用 4,FragmentTabHost +Fragment 不常使用 >步骤: 1.在布局中的跟标签 改成FragmentTabHost 在里添加容器 2,在;逻辑代码找出Fragm

Bowentm的博客 615

【Matlab算法】MATLAB实现的语音信号降噪算法(附MATLAB完整代码)

语音信号降噪是语音处理领域中的一个关键问题。在实际应用中,语音信号常常被各种环境噪声污染,这不仅影响了语音的质量,还可能导致后续处理(如语音识别)的性能下降。因此,开发有效的降噪算法对于提高语音通信质量、改善语音识别系统性能等具有重要意义。 本文将介绍并实现两种经典的语音信号降噪算法:谱减法和维纳滤波。这两种方法都是基于频域处理的技术,具有实现简单、计算效率高的特点。通过MATLAB实现这些算法,我们可以直观地比较它们的性能和降噪效果。

Albert_Lsk的博客 1328

21 导航书签一些总结

导航书签: TabHost+Activity 过时 ActionBar+Fragment 不建议使用 ActionBar+Fragment +ViewPager 不建议使用 FragmentTabHost +Fragment 不常使用 步骤: 1. 在布局中的跟标签 改成FragmentTabHost 在里添加容器 2....

weixin_30542079的博客 190

华为OD机试 - 压缩日志查询(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。某设备需要记录每分钟检测到的指标值。为了节约存储空间,将连续相同指标值的记录合并。压缩之前:202411231000,11 202411231001,11 202411231002,12 202411231003,12 202411231004,

学Java,找哪吒 1878

AI Agent开发第49课-DIFY让AI自动预约排班后发企业微信通知-MongoDb-Redis-企业微信调用

我们的Dify会讲得很透彻,坚持喂饭级教程,从一个基本的AI自动预约客户到自动记录客户的信息再到自动判断下一步如何走全部是AI化的,这是一个真正的AI原生应用,它来自于我的一个大型物业公司用AI自动预约系统中的一部分。我们会使用这个预约流做完整的Dify例子来讲完,因为它太有代表性了。工作流中的控制反转、AI决策下一步怎么走、人为干涉、用户行为判断、外部中间件如Redis,今天我们就要讲到在Dify中调用MongoDB的数据以及企业微信通知来作为预约派单的最后一步了。

打造全国最全的AI Agent开发知识领域的博客 1753

【幻化万千戏红尘】qianfeng-Android-Day19_导航栏制作

Fragment、ViewPager实现TAB导航条效果 制作Tab书签导航条(书签选项卡)有多种方法: 【特别提示:】注意几种创建Tab书签导航中Fragment生命周期的变化。 1、TabActivity+TabHost(已经过期) 2、Fragment + RadioGroup      【必要时首选】     3、Fragment + ViewPager  +  RadioGro

幻化万千戏红尘 301

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

使用ViewPager+RadioGroup+Fragment实现类似微信的底部导航

Android ViewPager+RadioGroup+Fragment超高仿微信6.0底部滑动菜单,可通过左右滑动或点击底部RadioButton切换Fragment 效果如下, 这张图片是我复制的别人博客内的图片,因为我这篇博客是在此博客的基础上写的 原文项目为使用AS的,我用Eclipse仿照了一遍并把源码上传到优快云上下载地址为: http://download.csdn.

xiaoqiang_0719的博客 1008

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

RadioGroup+ViewPager+Fragment的框架布局

第一次学的框架就是这个,用起来赶脚挺简单的拿出来分享一下(如果大家想用顶部这样的布局,或者上边添加个滑动的小三角指示器,可看一下这篇博客http://blog.youkuaiyun.com/kuaizilanqiu/article/details/52122740): 点击底部导航可以切换到相应的Fragment上,先看下布局文件吧:<?xml version="1.0" encoding="utf-8"

kuaizilanqiu的博客 1926

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ViewPager+RadioGroup实现标题栏切换,Fragment切换

1.说明: 在使用RadioGroup做标题栏切换的时候,跟ViewPager的滑动有冲突,最后查看了源码+断点调试解决了一些碰到的问题,写一篇博客总结一下,有同样需求的朋友可以借鉴一下,自己以后有用到也方便复习。 2.代码结构,以及功能说明 1).主界面的Fragment切换使用ViewPager实现 2).标题栏用RadioGroup实现 ...

dengshuo4753的博客 256

静态,动态使用Fragment的讲解。

Fragment:是一种可以嵌入在Activity中的 UI 片段,它能让程序更加合理和充分地利用大屏幕的空间,因而在平板和目前的大屏手机上应用的非常广泛(只要屏幕大,都会用到Fragment)。 下面我们就来看看Fragment静态和动态动态的使用。 一.静态使用Fragment: 把Fragment当成普通的控件,直接写在Activity的布局文件中。 思路: 1:在MainAciti

用心去专研技术,用代码改变世界__ Mr.Wang 4077

Android蓝牙自动配对工具类,亲测好使!!!

蓝牙自动配对,即搜索到其它蓝牙设备之后直接进行配对,不需要弹出配对确认框或者密钥输入框。 经过最近一段时间得研究,针对网上给出的案例。总结了一个亲测好使的Demo。 说明如下: 1、本Demo用来连接蓝牙设备HC-05,如果你要连接其他蓝牙设备,注意修改相关名字以及修改设备初试pin值。 2、将Demo安装在Android手机上,点击按钮,可以实现与目标蓝牙设备的自动配对。 3、若目标蓝牙

用心去专研技术,用代码改变世界__ Mr.Wang 3820

Activity七大生命周期详解

首先,流程图来一张: 介绍生命周期之前,先提一下任务的概念: 任务其实就是activity 的栈,换句话说任务就是” 应用程序” 。 栈底的是启动整个任务的Activity,栈顶的是当前运行的用户可以交互的Activity,当一个activity 启动另外一个的时候,新的activity 就被压入栈,并成为当前运行的activity。而前一个activity 仍保持在栈之中。当用户按下BACK

用心去专研技术,用代码改变世界__ Mr.Wang 2152

自定义书签导航

效果展示: 切换后: 实现思路: 1.三个书签其实就是三个TextView,先用shape画出TextView的两种状态,然后用选择器selector去切换TextView的状态。 2.创建三个Fragment,然后使用FragmentPagerAdapter进行适配。 3.三个TextView设置监听方法,当切换TextView时,Fragment也会相应的改变,也可以给三个View

用心去专研技术,用代码改变世界__ Mr.Wang 1769

使用Handler中postDelayed方法实现广告页面无限循环轮播效果

效果展示: 直接上代码: 1.MainActivity的代码:public class MainActivity extends Activity { private ViewPager viewPager; private ImageView[] imageViews; private int COUNT = 4; private Handler mHandler;

用心去专研技术,用代码改变世界__ Mr.Wang 1663
上一篇: 利用TabLayout(5.0新技术)+ViewPager+Fragment方法实现书签导航
下一篇: 利用Fragment + FragmentTabHost实现书签导航
Allen-华
博客等级 码龄11年 10粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值