这里简单记录一下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

更多相关文章

  1. JS获取整个HTML网页代码 - Android 集美软件园 - 博客频道 - CSD
  2. Android深入浅出系列课程---Lesson6 AAF110503_Activity状态保存
  3. Android下打开/关闭wifi 及 状态(5个)的监视
  4. Android GPS学习笔记—LMS初始化
  5. Android中实现下载和解压zip文件功能代码分享
  6. Android代码混淆只需简单三步
  7. Android系统源代码下载
  8. Android 常用代码整理:Android 常用弹窗整理
  9. Android 的状态栏设置图片填充或者颜色填充

随机推荐

  1. android 设置控件的透明度
  2. Android(安卓)远程图片获取和本地缓存(三)
  3. Android开发人员得让短信应用程序准备好
  4. android Looper学习
  5. Android模仿QQ的左右滑动切换界面和下拉
  6. Android(安卓)播放视频(四)VideoView全屏
  7. 关于修改Android手机的音量
  8. android service 之startService(...)
  9. Android计时器Chronometer小例子
  10. [Android] 移动端并行转码改造:音视频分离