Android底部导航栏实现(二)之RadioGroup
16lz
2021-01-23
这里简单记录一下Android底部导航栏通过RadioGroup+Fragment的实现。
布局:
<?xml version="1.0" encoding="utf-8"?>
这里的drawableTop使用了状态选择器
style
代码
初始化的代码就不记录了,都是一些findViewById,实现过程无非就是对RadioButton进行监听一下:
mRadioGroup.setOnCheckedChangeListener(this); @Override public void onCheckedChanged(RadioGroup group, int checkId) { FragmentTransaction transaction = getFragmentManager().beginTransaction(); switch (checkId) { case R.id.rb_home: if (mHomeFragment == null) { mHomeFragment = HomeFragment.newInstance(getString(R.string.item_home)); } transaction.replace(R.id.sub_content, mHomeFragment); break; case R.id.rb_location: if (mLocationFragment == null) { mLocationFragment = LocationFragment.newInstance(getString(R.string.item_location)); } transaction.replace(R.id.sub_content, mLocationFragment); break; case R.id.rb_like: if (mLikeFragment == null) { mLikeFragment = LikeFragment.newInstance(getString(R.string.item_like)); } transaction.replace(R.id.sub_content, mLikeFragment); break; case R.id.rb_me: if (mPersonFragment == null) { mPersonFragment = PersonFragment.newInstance(getString(R.string.item_person)); } transaction.replace(R.id.sub_content, mPersonFragment); break; } setTabState();//设置状态 transaction.commit(); }
状态的设置
private void setTabState() { setHomeState(); setLocationState(); setLikeState(); setMeState(); } /** * set tab home state */ private void setHomeState() { if (mRadioHome.isChecked()) { mRadioHome.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary)); } else { mRadioHome.setTextColor(ContextCompat.getColor(getActivity(), R.color.black)); } } private void setLocationState() { if (mRadioLocation.isChecked()) { mRadioLocation.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary)); } else { mRadioLocation.setTextColor(ContextCompat.getColor(getActivity(), R.color.black)); } } private void setLikeState() { if (mRadioLike.isChecked()) { mRadioLike.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary)); } else { mRadioLike.setTextColor(ContextCompat.getColor(getActivity(), R.color.black)); } } private void setMeState() { if (mRadioMe.isChecked()) { mRadioMe.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary)); } else { mRadioMe.setTextColor(ContextCompat.getColor(getActivity(), R.color.black)); } }
这里需要注意的是, setDefaultFragment();我写在onCreateVew里面并没有生效。这里我写在了onStart()方法里了。
@Override public void onStart() { setDefaultFragment();//写在onCreateView里面,当页面跑到其他Fragment再回来就不会生效 super.onStart(); }
说明:这几篇文章没有过多的文字叙述,因为这些东西也不是很难,而且都是常用的,相信很多人都了如指掌了,多说亦是废话,直接上代码看的反而更清楚。
DownLoad Demo
更多相关文章
- JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSD
- Android深入浅出系列课程---Lesson6 AAF110503_Activity状态保存
- Android下打开/关闭wifi 及 状态(5个)的监视
- Android GPS学习笔记—LMS初始化
- Android中实现下载和解压zip文件功能代码分享
- Android代码混淆只需简单三步
- Android系统源代码下载
- Android 常用代码整理:Android 常用弹窗整理
- Android 的状态栏设置图片填充或者颜色填充