利用RadioGroup + ViewPager + Fragment实现书签导航
来源:互联网 发布:公开网络摄像头 编辑:程序博客网 时间:2024/06/06 07:05
效果展示:
实现思路:
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(); }}
- 利用RadioGroup + ViewPager + Fragment实现书签导航
- 利用TabLayout(5.0新技术)+ViewPager+Fragment方法实现书签导航
- 利用Fragment + FragmentTabHost实现书签导航
- android中的ViewPager+Fragment+RadioGroup导航样式的实现
- Android中的RadioGroup+ViewPager+Fragment导航样式实现(续)
- 简单快速实现导航条(Viewpager+Fragment+Radiogroup)
- ViewPager+RadioGroup+Fragment仿微信实现底部导航功能
- android 底部导航栏 ViewPager+RadioGroup+Fragment
- Fragment + RadioGroup实现底部导航
- 使用ViewPager+RadioGroup+Fragment实现类似微信的底部导航
- 底部导航栏实现页面的切换(三):Fragment + RadioGroup + ViewPager
- ActionBar与ViewPager结合实现“书签导航”
- ViewPager与RadioGroup实现导航切换
- ViewPager+RadioGroup实现标题栏切换,Fragment切换
- ViewPager + Fragment+radiogroup实现滑动标签页
- ViewPager+RadioGroup+Fragment实现选项卡
- RadioGroup + ViewPager + Fragment 实现滑动展示界面
- RadioGroup+Fragment实现底部导航栏
- swift循环
- 出现“adb不是内部或外部命令,也不是可运行的程序或批量文件。”
- SQL数据库修复/数据库置疑修复
- swift懒加载
- swift构造方法
- 利用RadioGroup + ViewPager + Fragment实现书签导航
- swift遍历数组
- Android获取本机IP地址,绝对可行
- dopost doget区别
- Android Studio 报错:Your project path contains non-ASCII characters.
- Android中drawable各个属性讲解
- eclipse 修改文件出现The original file 'detail.html' has been deleted or is not accessible.
- mysqldump常用命令总结
- 第十三周阅读程序 虚函数