Android RadioGroup 及资源文件 & selector
RadioGroup :单选组 RadioButton :单选按钮
RadioButton和CheckBox的区别:
- 1、单个RadioButton在选中后,通过点击无法变为未选中
- 单个CheckBox在选中后,通过点击可以变为未选中
- 一组RadioButton,只能同时选中一个
- 一组CheckBox,能同时选中多个
- RadioButton在大部分UI框架中默认都以圆形表示
- CheckBox在大部分UI框架中默认都以矩形表示
RadioButton和RadioGroup的关系:
- RadioButton表示单个圆形单选框,而RadioGroup是可以容纳多个RadioButton的容器
- 每个RadioGroup中的RadioButton同时只能有一个被选中
- 不同的RadioGroup中的RadioButton互不相干,即如果组A中有一个选中了,组B中依然可以有一个被选中
- 大部分场合下,一个RadioGroup中至少有2个RadioButton
- 大部分场合下,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置
在layout.xml图像界面中拖出一个RadioGroup(默认是纵向),会产生三个RadioButton

当我们把RadioGroup中的android:orientation 设为水平 horizontal

参照我们手机的App,是不是很多地方都是这样呢?那么现在我们去掉按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:checked="true"
android:text="1" /> <RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:text="2" /> <RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:text="3" />
</RadioGroup> </LinearLayout>
=====================================================================================
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="match_parent"
android:layout_height="60dp"
android:orientation="horizontal"
android:background="@drawable/group_buton_nomal"
android:gravity="center"> <RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/weixin"
style="@style/radioStyle"
android:drawableTop="@drawable/tab_weixin"/> <RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/addressList"
style="@style/radioStyle"
android:drawableTop="@drawable/tab_address"/> <RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/find"
style="@style/radioStyle"
android:drawableTop="@drawable/tab_find"/> <RadioButton
android:id="@+id/radio3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/set"
style="@style/radioStyle"
android:drawableTop="@drawable/tab_set"/>
</RadioGroup> </LinearLayout>
效果如图:

那么,很多人就不明白了。为什么我复制下来,一模一样敲出来怎么没有这效果,还报错。
首先,我们先来看一下里面引用的资源:
1. android:id ="@+id/radioGroup1"
- @+id 与@id 的区别
-->@+id 自动把起的ID名字加入到配置文件中,在业务逻辑中可以直接在R.id中找到,相当于创建。
-->@id在Value目录下写一个ids.xml来对每个id进行声明,相当与引用。
2. android:background ="@drawable/group_buton_nomal"
android:drawableTop="@drawable/tab_weixin"
- 之前我们也讲过,在rec下的含有 drawable 的都是图片资源,用于像素不同引用。
-->单张图片引用,如背景图片。直接把图片复制进去。
-->多张图片引用,如图片切换。声明一个selector.xml


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_checked="true" --------选中时,图片
android:drawable="@drawable/tabbar_contacts_hl"></item> <item android:state_checked="false" --------离开时,图片
android:drawable="@drawable/tabbar_contacts"></item> </selector>
selector 主要是用来改变ListView和Button控件的默认背景。
- android:state_selected --------> 选中
- android:state_focused --------> 获得焦点
- android:state_pressed --------> 点击
- android:state_enabled --------> 设置是否响应事件,指所有事件
- android:state_selected --------> 选中
3.android:text="@string/weixin"
- 在res下有一个values文件夹,里面有一个strings.xml
-->字符串的资源文件,供layout 布局调用。很多人会直接:text="1" ,但会有警告,就是没引用资源。
4.style="@style/radioStyle"
- 样式资源定义了用户界面(UI)的格式和外观。样式能被应用到单独的View,也能应用带整个App
-->以 name(名称) --- 属性 键值对的方式存放在 res -->values -->styles.xml下
-->当然,style一般作为一种简化代码、重复利用、作为引用 ,相当与 打包
如上面的 在每个Button下都要设置 去掉按钮、比重为1、居中显示、文本选中变颜色,那么我们可以在values.xml中声明一个style
<style name="radioStyle">
<item name="android:button">@null</item>
<item name="android:layout_weight">1</item>
<item name="android:gravity">center</item>
<item ame="android:textColor">
@drawable/text_color</item>
</style>
在layout中就只要引用就可以了:style="@style/radioStyle" (注意对应name)
想必,知道这些,不用复制也可以自己写出来了。
下一篇:Android 微信UI、点击 http://www.cnblogs.com/hxb2016/p/6097870.html
谢谢大家的关注。万里不惜死,一朝得成功
Android RadioGroup 及资源文件 & selector的更多相关文章
- Android 开发学习进程0.17 Android资源文件selector textview显示两种不同字体
selector 是安卓资源文件的一种,它可以使按钮等实现不同状态下的不同UI,不用在代码中实现,而使用方式有两种,一种在color文件下 创建.xml可以使按钮等字体在不同状态下的变化,其二是在dr ...
- android 巧用资源文件(不断积累)
1.shape的使用 <shape xmlns:android="http://schemas.android.com/apk/res/android" > <s ...
- Android中的资源文件
最近复习Android资源文件的内容,留下点记录以备后用. Android中的资源主要是指存放在应用程序或者Framework相应包下/res中的内容.它们可以被本地化,如果必要的话会被编译成二进制文 ...
- Android学习--Assets资源文件读取及AssetManager介绍
APK安装过程 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用 ...
- Android笔记布局资源文件
在项目的res--layout目录下的文件叫布局资源文件,用于控制页面的布局显示 在Java代码中引用布局资源我们已经很熟悉了. setContentView(R.layout.activity_ma ...
- android删除无用资源文件的python脚本
随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年! 其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名( ...
- Android:Resources资源文件
Android Resoureces是res目录下的那些目录和文件,常用的有: res/drawable/ 存放图片资源,类型有: 相关使用: Android:res之shape制作圆角 Androi ...
- android如何播放资源文件夹raw中的视频
转自这里 videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/&qu ...
- Android资源文件命名规范
在复杂Android应用的开发中,资源文件的规范命名非常重要,能帮助设计人员和开发人员减小沟通成本.资源的名字尽量力求准确,可以适当长一些,但换回的价值是值得的. 关于WCC的Android开发,资源 ...
随机推荐
- java ftp下载文件
1.使用官方正规的jar commons-net-1.4.1.jar jakarta-oro-2.0.8.jar 注意:使用ftp从windows服务器下载文件和从linux服务器下载文件不一样 2. ...
- 解决secureCRT数据库里没有找到防火墙 '无'问题
中文版的secureCRT由于汉化的问题(把null翻译成无了),导致每次打开都会有个防火墙的错误提示:数据库里没有找到防火墙 '无' 此会话将尝试不通过防火墙进行连接.出现这个错误的原因是在secu ...
- JS闭包导致循环给按钮添加事件时总是执行最后一个
加入如下脚本代码: <script> var list_obj = document.getElementsByTagName('li'); for (var i = 0; i <= ...
- 简单方法判断JavaScript对象为null或者属性为空
对已声明但未初始化的和未声明的变量执行typeof,都返回undefined,null表示一个空对象指针,typeof操作会返回object 首先说下null与undefined区别: 对已声明但未初 ...
- CSS3的chapter3
CSS的常用样式分为几大类: 字体样式(font,color, text-decoration ,text-shadow) 元素样式(width,height,margin,padding,opaci ...
- 深入浅出设计模式——命令模式(Command Pattern)
模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请 ...
- 01-C语言概述
本文目录 一.C语言简史 二.C语言的特点 三.C语言能做什么? 四.C语言的版本问题 五.C语言语法预览 回到顶部 一.C语言简史 C语言于1972年发明,首次使用是用于重写UINX操作系统(UNI ...
- iOS - Frame 项目架构
前言 iOS 常见的几种架构: 标签式 Tab Menu 列表式 List Menu 抽屉式 Drawer 瀑布式 Waterfall 跳板式 Springborad 陈列馆式 Gallery 旋转木 ...
- Delphi 文件类型
该内容整理自以下链接 http://www.cnblogs.com/chenyunpeng/archive/2012/08/02/2620513.html 1.DPR: Delphi Project文 ...
- Android OkHttp完全解析 是时候来了解OkHttp了
Android OkHttp完全解析 是时候来了解OkHttp了 标签: AndroidOkHttp 2015-08-24 15:36 316254人阅读 评论(306) 收藏 举报 分类: [an ...