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   --------> 设置是否响应事件,指所有事件

  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的更多相关文章

  1. Android 开发学习进程0.17 Android资源文件selector textview显示两种不同字体

    selector 是安卓资源文件的一种,它可以使按钮等实现不同状态下的不同UI,不用在代码中实现,而使用方式有两种,一种在color文件下 创建.xml可以使按钮等字体在不同状态下的变化,其二是在dr ...

  2. android 巧用资源文件(不断积累)

    1.shape的使用 <shape xmlns:android="http://schemas.android.com/apk/res/android" > <s ...

  3. Android中的资源文件

    最近复习Android资源文件的内容,留下点记录以备后用. Android中的资源主要是指存放在应用程序或者Framework相应包下/res中的内容.它们可以被本地化,如果必要的话会被编译成二进制文 ...

  4. Android学习--Assets资源文件读取及AssetManager介绍

    APK安装过程        复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用 ...

  5. Android笔记布局资源文件

    在项目的res--layout目录下的文件叫布局资源文件,用于控制页面的布局显示 在Java代码中引用布局资源我们已经很熟悉了. setContentView(R.layout.activity_ma ...

  6. android删除无用资源文件的python脚本

    随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年! 其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名( ...

  7. Android:Resources资源文件

    Android Resoureces是res目录下的那些目录和文件,常用的有: res/drawable/ 存放图片资源,类型有: 相关使用: Android:res之shape制作圆角 Androi ...

  8. android如何播放资源文件夹raw中的视频

    转自这里 videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/&qu ...

  9. Android资源文件命名规范

    在复杂Android应用的开发中,资源文件的规范命名非常重要,能帮助设计人员和开发人员减小沟通成本.资源的名字尽量力求准确,可以适当长一些,但换回的价值是值得的. 关于WCC的Android开发,资源 ...

随机推荐

  1. 淘宝druid数据库连接池

    昨天偶然间在@红薯的一篇技术分享中发现了它的身影,从此想到了去看看他到底是什么西,然后在@开源中国上看到了它的功能介绍,心痒难耐 开始了对它的配置测试. 但是第一次启动就发现了一个问题, Tomat报 ...

  2. property attribute: assign, strong, weak, unsafe_unretain and copy

    assign:用于“纯量类型”(如CGFloat 或 NSInteger等): strong:用于“对象类型”,定义了一种“拥有关系”(owning relationship),为这种属性设置新值时, ...

  3. flex垂直居中

    最近遇到一个令我绞尽脑汁的布局 T.T.T.T,分享下.重点--垂直居中. 布局说明:1. 场次为一场比赛 2. 比赛双方是交战的两个队伍 3. 一场比赛可以有多种玩法,所以场的每个玩法的布局的高度都 ...

  4. crawler4j源码学习(2):Ziroom租房网房源信息采集爬虫

    crawler4j是用Java实现的开源网络爬虫.提供了简单易用的接口,可以在几分钟内创建一个多线程网络爬虫.下面实例结合jsoup解析网页,javacsv存储采集数据:采集自如ziroom租房网(h ...

  5. System & Runtime &Math

    package com.shushine.framework.第七章Java标准类库;/** * * <p> * 描述该类情况 {@link 代表跟谁有关系} * </p> * ...

  6. php: 学习记录

    1.get_object_vars($obj) 获取对象$obj的属性数组 2.类和对象 <?php // 类和对象 echo "类和对象" . "\n" ...

  7. javascript 去掉空格之后的字符 正则表达式

    从后端数据库读取时间时,经常会把整个日期年月日包括时分秒都取到,如2015-1-28 14:56:00,但是一般的我们只需要前面的年月日就行了.一个简单的方法,直接用split(" &quo ...

  8. 单据状态BE构建

    这节主要罗列出单据状态BE构建步骤1.创建单据状态BE实体项目,修改命名空间 2.如下图所示,分别设置实体枚举状态值 3.修改单据基本属性 构造后,至此单据状态BE构建完毕

  9. 从ASP了解Http Buffer

    he Buffer property specifies whether to buffer the output or not. When the output is buffered, the s ...

  10. window.location.href 失效的解决办法

    第一种:在window.location.href 后面加上 window.event.returnValue = false; 如: <a href="#" onclick ...