博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ViewPager+RadioGroup实现标题栏切换,Fragment切换
阅读量:5838 次
发布时间:2019-06-18

本文共 3998 字,大约阅读时间需要 13 分钟。

1.说明:

在使用RadioGroup做标题栏切换的时候,跟ViewPager的滑动有冲突,最后查看了源代码+断点调试攻克了一些碰到的问题,写一篇博客总结一下,有相同需求的朋友能够借鉴一下,自己以后实用到也方便复习。

2.代码结构,以及功能说明

    1).主界面的Fragment切换使用ViewPager实现

    2).标题栏用RadioGroup实现

    3).实现这两个控件的监听函数,改变背景,改变字体颜色,设置当前Fragment,设置当前选中RadioButton

3.主界面代码实现

public class MainActivity extends FragmentActivity {	private RadioButton homeFollow,homeRecommend,homeLocation;	private ViewPager  vPager;	private List
list=new ArrayList
(); private MyFragmentAdapter adapter; private final int[] array=new int[]{R.id.home_follow,R.id.home_recommend,R.id.home_location}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.view_pager_test); FollowFragment topFragment = new FollowFragment(); RecommendFragment hotFragment = new RecommendFragment(); LocationFragment locationFragment = new LocationFragment(); list.add(topFragment); list.add(hotFragment); list.add(locationFragment); vPager = (ViewPager) findViewById(R.id.viewpager_home); adapter = new MyFragmentAdapter(getSupportFragmentManager(), list); vPager.setAdapter(adapter); vPager.setOffscreenPageLimit(2); vPager.setCurrentItem(1); vPager.setOnPageChangeListener(pageChangeListener); homeFollow=(RadioButton) findViewById(R.id.home_follow); homeRecommend=(RadioButton) findViewById(R.id.home_recommend); homeLocation=(RadioButton) findViewById(R.id.home_location); RadioGroup group=(RadioGroup) findViewById(R.id.home_page_select); group.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group,int checkedId){ //设置了ViewPager的当前item就会触发ViewPager的SimpleOnPageChangeListener监听函数 switch (checkedId){ case R.id.home_follow: vPager.setCurrentItem(0); break; case R.id.home_recommend: vPager.setCurrentItem(1); break; case R.id.home_location: vPager.setCurrentItem(2); break; } } }); } SimpleOnPageChangeListener pageChangeListener=new SimpleOnPageChangeListener(){ public void onPageSelected(int position){ change(array[position]); } }; /** * 改变背景颜色,背景图片 * @param checkedId */ private void change(int checkedId){ //改变背景颜色 homeFollow.setBackgroundResource(R.drawable.icon_top_normal); homeRecommend.setBackgroundResource(R.drawable.icon_recommend_normal); homeLocation.setBackgroundResource(R.drawable.icon_location_normal); //改变字体颜色 homeFollow.setTextColor(getResources().getColor(R.color.white_normal)); homeRecommend.setTextColor(getResources().getColor(R.color.white_normal)); homeLocation.setTextColor(getResources().getColor(R.color.white_normal)); switch (checkedId){ case R.id.home_follow: homeFollow.setBackgroundResource(R.drawable.icon_top_select); homeFollow.setTextColor(getResources().getColor(R.color.balck_normal)); homeFollow.setChecked(true); break; case R.id.home_recommend: homeRecommend.setBackgroundResource(R.drawable.icon_recommend_select); homeRecommend.setTextColor(getResources().getColor(R.color.balck_normal)); homeRecommend.setChecked(true); break; case R.id.home_location: homeLocation.setBackgroundResource(R.drawable.icon_location_select); homeLocation.setTextColor(getResources().getColor(R.color.balck_normal)); homeLocation.setChecked(true); break; } }}

4.ViewPager适配器

public class MyFragmentAdapter extends FragmentStatePagerAdapter {	private List
list; public MyFragmentAdapter(FragmentManager fm, List
list) { super(fm); this.list = list; } public MyFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int arg0) { return list.get(arg0); } @Override public int getCount() { return list.size(); }}

5.主界面布局文件

 6.效果图例如以下:

     

另一些布局文件,跟资源文件我就不贴出来了,有须要的能够直接下载源代码

推荐下自己创建的android QQ群:202928390 欢迎大家的增加.

推荐一个Android开发人员必关注公众号,每周都有原创干货

你可能感兴趣的文章
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
修改上一篇文章的node.js代码,支持默认页及支持中文
查看>>
java只能的round,ceil,floor方法的使用
查看>>
新开的博客,为自己祝贺一下
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
我的2014-相对奢侈的生活
查看>>
Java设计模式
查看>>
华为OJ 名字美丽度
查看>>
微信公众号与APP微信第三方登录账号打通
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
基本概念复习
查看>>
重构第10天:提取方法(Extract Method)
查看>>
通过Roslyn构建自己的C#脚本(更新版)(转)
查看>>