如何用RadioButton做一个底部的切换栏

上面的效果是用Radio进行制作的,一般我们做底部的切换栏的时候需要让按钮和文字都有一个选中的状态,然后根据点击不同的按钮触发不同的页面,这里的页面一般都是fragment做的。这里我们不讨论复杂的东西,只是讲如何实现这样的效果。这里的关键点是中间的按钮和两边的按钮没有互斥关系,仅仅是一个独立的ImageView,还有就是按钮的文字需要根据选中的状态进行变化,按钮的图片需要根据状态进行变化。
一、定义按钮的图片和文字效果
我们在res中建立一个color的目录,建立一个main_bottombar_text_selector.xml的文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#ff0000" android:state_pressed="false" android:state_checked="true" />
<item android:color="#555555"/>
</selector>
这里可以明显的看出,我用到的仅仅是颜色值,而根据不同的状态颜色值是不同的。下面开始建立按钮图片的效果。
在drawable中建立一个main_bottombar_icon_home_selector.xml,写入如下代码:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_icon_home_highlight" android:state_checked="true" android:state_pressed="false" />
<item android:drawable="@drawable/tab_icon_home" />
</selector>
这里和上面不同点在于根据不同的状态选取的是图片。
二、准备就绪,实现效果
实现效果的方式超级简单,和linearLayout中放控件一模一样。
<RadioGroup
android:id="@+id/main_bottom_bar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:orientation="horizontal"
android:paddingTop="5dp"
> <RadioButton
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawablePadding="1dp"
android:drawableTop="@drawable/main_bottombar_icon_home_selector"
android:gravity="center"
android:text="Tab01"
android:textColor="@color/main_bottombar_text_selector"
android:textSize="11sp"
/> <RadioButton
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawablePadding="1dp"
android:drawableTop="@drawable/main_bottombar_icon_home_selector"
android:gravity="center"
android:text="Tab02"
android:textColor="@color/main_bottombar_text_selector"
android:textSize="11sp"
/> <ImageButton
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="-3dp"
android:layout_weight="1"
android:src="@mipmap/ic_launcher"
/> <RadioButton
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawablePadding="1dp"
android:drawableTop="@drawable/main_bottombar_icon_home_selector"
android:gravity="center"
android:text="Tab03"
android:textColor="@color/main_bottombar_text_selector"
android:textSize="11sp"
/> <RadioButton
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawablePadding="1dp"
android:drawableTop="@drawable/main_bottombar_icon_home_selector"
android:gravity="center"
android:text="Tab04"
android:textColor="@color/main_bottombar_text_selector"
android:textSize="11sp"
/> </RadioGroup>
需要注意的是radioGroup默认是纵向排列的,需要设置方向为横向才行哦~

如果你需要顶部的切换tab,可以参考:
https://github.com/hoang8f/android-segmented-control
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0512/1615.html

如果你还需要红点的话,可以参考我的一个github工程,是通过自定义RadioGroup来进行红点的控制的:
https://github.com/tianzhijiexian/BottomTabBar
源码下载:http://download.csdn.net/detail/shark0017/8801535
参考自:http://www.tuicool.com/articles/7VBbu2m
如何用RadioButton做一个底部的切换栏的更多相关文章
- 【CSS】如何用css做一个爱心
摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...
- 如何用css做一个爱心
摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...
- Micropython 如何用Turnipbit做一个自动浇水装置
最近在研究Turnipbit这块板子,打算是连接一个摄像头模块,正在实验练习中,(祝自己早日弄好)上篇文章我们讲了用Turnipbit连接LCD5110显示英文词句,前几天给家里花浇水的时候发现花招了 ...
- 如何用C#做一个悬浮窗口程序
用C#做一个像FlashGet的悬浮窗口,其实很简单,不像以前需要调用很多系统API.大致的步骤如下. 首先是主窗体部分,即要判断窗体的状态来决定是否显示悬浮窗口. 局部成员声明: private F ...
- 如何用JavaScript做一个可拖动的div层
可拖动的层在Web设计中用处很多,比如在某些需要自定义风格布局的应用中,控件就需要拖动操作,下面介绍一个,希望可以满足你的需求,顺便学习一下可拖动的层是如何实现的. 下面是效果演示: 这个DIV可以移 ...
- 如何用css做一个细虚线边框表格
<style type="text/css"> <!-- .dashed_tbl { border-top: 1px dashed #333333; border ...
- 微信小程序~TabBar底部导航切换栏
底部导航栏这个功能是非常常见的一个功能,基本上一个完成的app,都会存在一个导航栏,那么微信小程序的导航栏该怎么实现呢?经过无数的踩坑,终于实现了,好了,先看看效果图. 对于底部导航栏,小程序上给出的 ...
- vue2.0实现底部导航切换效果
使用vue2.0写移动端的时候,经常会写底部导航效果,点击切换路由效果,实现图片和文字颜色切换.vue2.0也提供了很多ul框架供我们实现效果,今天就用原生的实现一个底部导航切换,直接上代码: 效果图 ...
- R数据分析:跟随top期刊手把手教你做一个临床预测模型
临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...
随机推荐
- 精选12个时尚的 CSS3 效果【附源码下载】
这里是精选的12个很炫的 CSS3 效果.CSS3 是对 CSS 规范的一个很大的改善和增强,它使得 Web 开发人员可以很容易的在网站中加入时尚的效果.以前很多需要编写复杂的 JavaScript ...
- 15个前卫的 HTML5 & CSS3 网页设计作品
今天,我们编译收集一组使用 HTML5 和 CSS3 制作的精美网站.在此集合中,你可以看到平面设计,网页设计,作品集和企业网站设计实例. 响应式设计和基于 HTML5 & CSS3 编码的网 ...
- 创建数据库和表相关的SQL语句
SQL server注释语句有两种: 一种是单行注释,一种是多行注释. ******************** 单行注释用:--注释一行内容 多行注释用:/* *注释 *多行内容 */ 创建数据库: ...
- Android通过xml文件配置数据库
之前一段时间自己封装了两个数据库,一个是ORM数据库,另一个是事件流数据库,项目相应的地址如下: ORM数据库:https://github.com/wenjiang/SimpleAndroidORM ...
- CentOS7 PostgreSQL安装
CentOS7 PostgreSQL安装 CentOS7 PostgreSQL安装 Install 安装 使用yum安装 yum install http://yum.postgresql.org/9 ...
- 一行代码实现js数组去重
console.log([...new Set([1,2,3,4,2,1,2,2,2,167,4,3,32,2,1])])
- php实现留言功能
php真的挺好玩的! 先写出前台页面index.php: <!DOCTYPE html> <html lang="en"> <head> < ...
- java反射的基础学习代码
java反射的学习,好多东西不太理解,主要分析了constructor,method,field,数组和调用main函数等反射的多个方面小例子. 主要的练习类 package javaAdvanced ...
- csharp: Export DataTable to Excel using OpenXml 2.5 in asp.net
//https://www.microsoft.com/en-us/download/details.aspx?id=5124 Open XML SDK 2.0 for Microsoft Offic ...
- Java并发编程:如何创建线程?
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...