一. 简介

1.1 原理

就是用RadioButton实现一组导航栏的布局,然后处理点击事件,动态替换Fragment

1.2 用到东西

RadioButton

StateListDrawable

1.3 注意事项

图片不能太大,太大会导致效果不好,如图

图标太大的导航栏

二. 实现

编写布局

activity_main.xml

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context="cn.foxnickel.radiobuttonnavigation.MainActivity">

android:id="@+id/radio_group"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:background="@android:color/white"

android:orientation="horizontal">

android:id="@+id/rb_home"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content"

android:background="@null"

android:button="@null"

android:checked="true"

android:drawableTop="@drawable/radiobutton_bg_home"

android:gravity="center"

android:padding="8dp"

android:text="Home"

android:textSize="16sp"/>

android:id="@+id/rb_like"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content"

android:background="@null"

android:button="@null"

android:drawableTop="@drawable/radiobutton_bg_like"

android:gravity="center"

android:padding="8dp"

android:text="Like"

android:textSize="16sp"/>

android:id="@+id/rb_location"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content"

android:background="@null"

android:button="@null"

android:drawableTop="@drawable/radiobutton_bg_location"

android:gravity="center"

android:padding="8dp"

android:text="Location"

android:textSize="16sp"/>

android:id="@+id/rb_me"

android:layout_width="0dp"

android:layout_weight="1"

android:layout_height="wrap_content"

android:background="@null"

android:button="@null"

android:drawableTop="@drawable/radiobutton_bg_me"

android:gravity="center"

android:padding="8dp"

android:text="Me"

android:textSize="16sp"/>

android:layout_width="match_parent"

android:layout_height="2dp"

android:background="#eeeeee"

android:layout_above="@id/radio_group"/>

其中用到的drawableTop为StateListDrawable

content_main.xml

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

xmlns:tools="http://schemas.android.com/tools"

android:orientation="vertical"

tools:showIn="@layout/activity_main">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/app_name"

android:textSize="24sp"

android:textColor="@color/colorPrimary"/>

处理逻辑

MainActivity

package cn.foxnickel.radiobuttonnavigation;

import android.os.Bundle;

import android.support.v4.content.ContextCompat;

import android.support.v7.app.AppCompatActivity;

import android.widget.RadioButton;

import android.widget.RadioGroup;

import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener{

RadioButton mHome,mLike,mLocation,mMe;

RadioGroup mRadioGroup;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

}

private void initView(){

mHome = (RadioButton) findViewById(R.id.rb_home);

mLike = (RadioButton) findViewById(R.id.rb_like);

mLocation = (RadioButton) findViewById(R.id.rb_location);

mMe = (RadioButton) findViewById(R.id.rb_me);

mRadioGroup = (RadioGroup) findViewById(R.id.radio_group);

mRadioGroup.setOnCheckedChangeListener(this);

}

/*RadioGroup点击事件*/

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

switch (checkedId) {

case R.id.rb_home:

// TODO: 2017/4/9 进行fragment的替换

Toast.makeText(MainActivity.this,"Home",Toast.LENGTH_SHORT).show();

break;

case R.id.rb_location:

// TODO: 2017/4/9 进行fragment的替换

Toast.makeText(MainActivity.this,"Location",Toast.LENGTH_SHORT).show();

break;

case R.id.rb_like:

// TODO: 2017/4/9 进行fragment的替换

Toast.makeText(MainActivity.this,"Like",Toast.LENGTH_SHORT).show();

break;

case R.id.rb_me:

// TODO: 2017/4/9 进行fragment的替换

Toast.makeText(MainActivity.this,"Me",Toast.LENGTH_SHORT).show();

break;

}

setTabState();//每次点击之后设置RadioButton的颜色状态

}

private void setTabState() {

setHomeState();

setLocationState();

setLikeState();

setMeState();

}

/*设置HomeRadioButton的状态*/

private void setHomeState() {

if (mHome.isChecked()) {

mHome.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));

} else {

mHome.setTextColor(ContextCompat.getColor(this, R.color.black));

}

}

/*设置LocationRadioButton的状态*/

private void setLocationState() {

if (mLocation.isChecked()) {

mLocation.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));

} else {

mLocation.setTextColor(ContextCompat.getColor(this, R.color.black));

}

}

/*设置LikeRadioButton的状态*/

private void setLikeState() {

if (mLike.isChecked()) {

mLike.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));

} else {

mLike.setTextColor(ContextCompat.getColor(this, R.color.black));

}

}

/*设置MeRadioButton的状态*/

private void setMeState() {

if (mMe.isChecked()) {

mMe.setTextColor(ContextCompat.getColor(this, R.color.colorPrimary));

} else {

mMe.setTextColor(ContextCompat.getColor(this, R.color.black));

}

}

}

android radiobutton底部导航,Android底部导航栏之RadioButton相关推荐

  1. android radiobutton底部导航,android中Fragment+RadioButton实现底部导航栏

    在App中经常看到这样的tab底部导航栏 那么这种效果是如何实现,实现的方式有很多种,最常见的就是使用Fragment+RadioButton去实现.下面我们来写一个例子 首先我们先在activity ...

  2. php仿微信底部菜单,Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  3. android滑动菜单图标,Android实现简单底部导航栏 Android仿微信滑动切换效果

    Android仿微信滑动切换最终实现效果: 大体思路: 1. 主要使用两个自定义View配合实现; 底部图标加文字为一个自定义view,底部导航栏为一个载体,根据需要来添加底部图标; 2. 底部导航栏 ...

  4. android自定义底部中间突出导航栏,Android选中突出背景效果的底部导航栏功能

    今天在群里看到一个底部导航选中突出效果像这样 就想着 这个应该怎么做呢,我记得类似咸鱼那种的是中间突出,不像这种 是选中哪个,哪个就突出 第一种方法 简单快捷,让UI帮忙切几张带突出背景的图片, 选中 ...

  5. Android Navigation与BottomNavigationView实现底部导航栏

    底部导航栏 一.效果图 二.实现 1.创建Fragment以及布局文件 2.添加FragmentContainerView和BottomNavigationView两个控件 3.配置xml资源文件 4 ...

  6. Android商城开发--实现商城底部导航栏

    让我们先看效果图: 图一是默认效果图,图二是点击首页的效果图(图标和字体颜色会变化)            接下来是实现方法 1.先写布局. 我新建了一个ShoppingActivity,在activ ...

  7. 在android Studio中设计app的底部导航栏

    准备工作 新建一个空白android项目 命名为csdn 在res/layout路径下设置主页面 使用线性布局 linearLayout 使用自定义的viewPager(切换多个页面会秒跳转,提升体验 ...

  8. android开发时华为手机底部导航栏挡住了应用布局

    原因:使用安卓的BottomNavigationView控件开发底部导航栏同时使用了沉浸式状态栏导致华为手机的底部导航栏会盖住我应用的导航栏. 解决:先写一个工具类 import android.co ...

  9. android底部导航栏选中动画,Android选中突出背景效果的底部导航栏功能

    今天在群里看到一个底部导航选中突出效果像这样 就想着 这个应该怎么做呢,我记得类似咸鱼那种的是中间突出,不像这种 是选中哪个,哪个就突出 第一种方法 简单快捷,让UI帮忙切几张带突出背景的图片, 选中 ...

最新文章

  1. java两个线程交替执行
  2. deepin root密码_Deepin安装MySQL
  3. MYSQL--事务隔离
  4. 掌控谈话~让对方说“不”
  5. 为什么python发展的好_为什么Python发展这么快,有哪些优势?
  6. mysql判断是否包含某个字符的方法
  7. 作为程序员,错过这次和以太坊V神的面基,你可能会痛失1个亿!
  8. 哀悼日网站全站变灰代码,最简单的还是ng这种方式...
  9. 计算机专业大二还学微积分吗,大学最容易挂科的专业,计算机专业绝对排得上前三,其他专业呢?...
  10. 在线扒站复活版可预览网站html源码
  11. 切图工具:又一个处理大图的例子
  12. 淘宝爆款单品月纯利100万运营实战
  13. 超酷计算机病毒,世界上十种最强的计算机病毒,最著名的计算机病毒都在这里!...
  14. 《老路用得上的商学课》71-75学习笔记
  15. 018-双因素理论|如何管理80后,90后
  16. 常用矩阵求导公式推导
  17. 如何在长期地学习和工作中保持精力充沛?
  18. 2021山师高考联考成绩查询,点击关注:2021五岳联考阅卷成绩查询入口
  19. 拉普拉斯矩阵(Laplacian matrix)的求解
  20. 如何把照片进行压缩?好用的压缩方法分享

热门文章

  1. IntelliJ IDEA Plugins 插件整理
  2. 第五课 田中さんは 会社へ 行きます。
  3. mysql case when
  4. win10部分类型的文件右键无反应
  5. iPhone短信铃声制作(caf格式)及替换
  6. zxing二维码扫描预览变形的解决方案
  7. Mac 3D艺术字一键生成工具:​​​​Art Text
  8. 原创游戏,金庸群侠传X 0.5公布
  9. TestComplete 最新安装教程
  10. 互联网打工人的副业与B面生活