这里简单记录一下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. android中的提示信息显示方法(toast应用)
  2. Android实现widget定时更新
  3. selector in Android
  4. Android(安卓)中使用OpenGL ES进行2D开发(GLSurfaceView)
  5. Android应用实例之----基于Service与ContentProvider的音乐播放
  6. Android(安卓)P按键静音流程
  7. Android(安卓)NDK开发
  8. JS获取整个HTML网页代码 - Android(安卓)集美软件园 - 博客频道
  9. Android(安卓)Studio 常用插件收集

随机推荐

  1. Android Activity从创建到显示流程
  2. Android 如何破解兼容性困局
  3. 学个明白--Android世界的坐标系
  4. Android(安卓)OKHttp系列2-RetryAndFollo
  5. 关于greenDao函数报错
  6. Android—自制Android闹钟3步即可!(2020-6
  7. android 获取实时麦克风声音大小
  8. 《Android第一行代码》first reading 十
  9. Android(安卓)7.0 系统解决拍照的问题 ex
  10. Android Broadcast 用法简单讨论