RadioGroup和RadioButton

首先看RadioGroup,它是继承了LinearLayout,属于ViewGroup

作为RadioButton的容器,RadioGroup的属性比较简单,和LinearLayout基本差不多,区别是有 RadioGroup.OnCheckedChangeListener接口,XML可以默认单选的ID

android:checkedButton

默认情况下应在此单选组中选中的子单选按钮的 ID。

看一下公告的方法

公共方法

void

addView(View child, int index, ViewGroup.LayoutParams params)

添加具有指定布局参数的子视图。

void

autofill(AutofillValue value)

自动填充此视图的内容value。

void

check(int id)

将选择设置为其标识符在参数中传递的单选按钮。

void

clearCheck()

清除选择。

RadioGroup.LayoutParams

generateLayoutParams(AttributeSet attrs)

根据提供的属性集返回一组新的布局参数。

CharSequence

getAccessibilityClassName()

返回此对象的类名以用于可访问性目的。

int

getAutofillType()

描述此视图的自动填充类型,因此 AutofillService可以AutofillValue 在自动填充视图时创建正确的类型。

AutofillValue

getAutofillValue()

获取View的当前自动填充值。

int

getCheckedRadioButtonId()

返回该组中所选单选按钮的标识符。

void

onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info)

使用AccessibilityNodeInfo有关此视图的信息初始化。

void

setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener)

在此组中检查的单选按钮更改时,请注册要调用的回调。

void

setOnHierarchyChangeListener(ViewGroup.OnHierarchyChangeListener listener)

注册一个回调,以便在将子项添加到此视图或从中删除时调用。

接下来看RadioButton,它是继承了CompoundButton,属于Button

XML主要属性,其他可以参考基础控件TextView

android:button

Drawable 用于按钮图形(例如,复选框和单选按钮)。

android:buttonTint

应用于按钮图形的色调。

android:buttonTintMode

用于应用按钮图形色调的混合模式。

看一下公共方法

公共方法

CharSequence

getAccessibilityClassName()

返回此对象的类名以用于可访问性目的。

void

onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info)

使用AccessibilityNodeInfo有关此视图的信息初始化。

void

toggle()

将视图的选中状态更改为与其当前状态相反的状态

如果单选按钮已被选中,则此方法不会切换单选按钮。

下面是实际应用的样式

效果:

<RadioGroup

android:id="@+id/rg_fence"

android:layout_width="match_parent"

android:layout_height="@dimen/common_100dp"

android:layout_marginTop="@dimen/common_10dp"

android:background="@color/white"

android:orientation="vertical"

app:layout_constraintTop_toBottomOf="@id/fl_name">

<RadioButton

android:id="@+id/rb_no_fly_area"

android:layout_width="match_parent"

android:layout_height="@dimen/common_50dp"

android:background="@drawable/selector_normal_press_bg"

android:button="@null"

android:drawableStart="@drawable/shape_fence_red_circle"

android:drawableEnd="@drawable/select_fence_check"

android:drawablePadding="@dimen/common_15dp"

android:paddingStart="@dimen/common_10dp"

android:paddingEnd="@dimen/common_10dp"

android:text="@string/no_fly_area"

android:textColor="@color/C6"

android:textSize="@dimen/sp_15" />

<View

android:layout_width="match_parent"

android:layout_height="@dimen/common_0_5dp"

android:layout_marginStart="@dimen/common_12dp"

android:background="@color/gray_c6c6c8" />

<RadioButton

android:id="@+id/rb_electronic_fence"

android:layout_width="match_parent"

android:layout_height="@dimen/common_50dp"

android:background="@drawable/selector_normal_press_bg"

android:button="@null"

android:checked="true"

android:drawableStart="@drawable/shape_fence_green_circle"

android:drawableEnd="@drawable/select_fence_check"

android:drawablePadding="@dimen/common_15dp"

android:paddingStart="@dimen/common_10dp"

android:paddingEnd="@dimen/common_10dp"

android:text="@string/electronic_fence"

android:textColor="@color/C6"

android:textSize="@dimen/sp_15" />

</RadioGroup>

RadioGroup可以嵌套其他组件,例如下图

<RadioGroup

android:id="@+id/rg_time"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="@dimen/common_10dp"

android:background="@color/white"

android:orientation="vertical"

app:layout_constraintTop_toBottomOf="@id/ll_seek">

<RadioButton

android:id="@+id/rb_time_limit"

android:layout_width="match_parent"

android:layout_height="@dimen/common_50dp"

android:background="@drawable/selector_normal_press_bg"

android:button="@null"

android:drawableEnd="@drawable/select_fence_check"

android:drawablePadding="@dimen/common_15dp"

android:paddingStart="@dimen/common_10dp"

android:paddingEnd="@dimen/common_10dp"

android:text="@string/fence_period"

android:textColor="@color/C6"

android:textSize="@dimen/sp_15" />

<androidx.constraintlayout.widget.ConstraintLayout

android:id="@+id/cl_time_limit"

android:layout_width="match_parent"

android:layout_height="@dimen/common_100dp"

android:visibility="gone">

<TextView

android:id="@+id/tv_start"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:gravity="center_vertical"

android:text="@string/start"

android:textColor="@color/C6"

android:textSize="@dimen/sp_15"

app:layout_constraintBottom_toTopOf="@id/line"

app:layout_constraintStart_toStartOf="@id/line"

app:layout_constraintTop_toTopOf="parent" />

<TextView

android:id="@+id/tv_start_date"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_marginStart="@dimen/common_15dp"

android:background="@drawable/selector_normal_press_bg"

android:drawableStart="@mipmap/fence_time_add"

android:drawablePadding="@dimen/common_6dp"

android:gravity="center_vertical"

android:text="@string/date"

android:textColor="@color/blue_007aff"

android:textSize="@dimen/sp_15"

app:layout_constraintBottom_toTopOf="@id/line"

app:layout_constraintStart_toEndOf="@id/tv_start"

app:layout_constraintTop_toTopOf="parent" />

<TextView

android:id="@+id/tv_start_time"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_marginEnd="@dimen/common_15dp"

android:background="@drawable/selector_normal_press_bg"

android:drawableStart="@mipmap/fence_time_add"

android:drawablePadding="@dimen/common_6dp"

android:gravity="center_vertical"

android:text="@string/time"

android:textColor="@color/blue_007aff"

android:textSize="@dimen/sp_15"

app:layout_constraintBottom_toTopOf="@id/line"

app:layout_constraintEnd_toEndOf="@id/line"

app:layout_constraintTop_toTopOf="parent" />

<View

android:id="@+id/line"

android:layout_width="match_parent"

android:layout_height="@dimen/common_0_5dp"

android:layout_marginStart="@dimen/common_24dp"

android:background="@color/gray_c6c6c8"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintTop_toTopOf="parent" />

<TextView

android:id="@+id/tv_end"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:gravity="center_vertical"

android:text="@string/end"

android:textColor="@color/C6"

android:textSize="@dimen/sp_15"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintStart_toStartOf="@id/line"

app:layout_constraintTop_toBottomOf="@id/line" />

<TextView

android:id="@+id/tv_end_date"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_marginStart="@dimen/common_15dp"

android:background="@drawable/selector_normal_press_bg"

android:drawableStart="@mipmap/fence_time_add"

android:drawablePadding="@dimen/common_6dp"

android:gravity="center_vertical"

android:text="@string/date"

android:textColor="@color/blue_007aff"

android:textSize="@dimen/sp_15"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintStart_toEndOf="@id/tv_start"

app:layout_constraintTop_toBottomOf="@id/line" />

<TextView

android:id="@+id/tv_end_time"

android:layout_width="wrap_content"

android:layout_height="0dp"

android:layout_marginEnd="@dimen/common_15dp"

android:background="@drawable/selector_normal_press_bg"

android:drawableStart="@mipmap/fence_time_add"

android:drawablePadding="@dimen/common_6dp"

android:gravity="center_vertical"

android:text="@string/time"

android:textColor="@color/blue_007aff"

android:textSize="@dimen/sp_15"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="@id/line"

app:layout_constraintTop_toBottomOf="@id/line" />

<View

android:layout_width="match_parent"

android:layout_height="@dimen/common_0_5dp"

android:background="@color/gray_c6c6c8"

app:layout_constraintBottom_toBottomOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

<View

android:id="@+id/line1"

android:layout_width="match_parent"

android:layout_height="@dimen/common_0_5dp"

android:layout_marginStart="@dimen/common_12dp"

android:background="@color/gray_c6c6c8" />

<RadioButton

android:id="@+id/rb_permanent"

android:layout_width="match_parent"

android:layout_height="@dimen/common_50dp"

android:background="@drawable/selector_normal_press_bg"

android:button="@null"

android:checked="true"

android:drawableEnd="@drawable/select_fence_check"

android:drawablePadding="@dimen/common_15dp"

android:paddingStart="@dimen/common_10dp"

android:paddingEnd="@dimen/common_10dp"

android:text="@string/fence_valid"

android:textColor="@color/C6"

android:textSize="@dimen/sp_15" />

</RadioGroup>

附上图片资源

shape_fence_red_circle

<?xml version="1.0" encoding="utf-8"?>

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

android:shape="oval">

<solid android:color="@color/red_D80000_30" />

<stroke

android:width="@dimen/common_0_5dp"

android:color="@color/red_D80000" />

<size

android:width="@dimen/common_10dp"

android:height="@dimen/common_10dp" />

</shape>

shape_fence_green_circle

<?xml version="1.0" encoding="utf-8"?>

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

android:shape="oval">

<solid android:color="@color/green_3CE171_30" />

<stroke

android:width="@dimen/common_0_5dp"

android:color="@color/green_3CE171" />

<size

android:width="@dimen/common_10dp"

android:height="@dimen/common_10dp" />

</shape>

select_fence_check

<?xml version="1.0" encoding="utf-8"?>

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

<item android:drawable="@mipmap/icon_select_check" android:state_checked="true" />

<item>

<shape android:shape="rectangle">

<solid android:color="@color/transparent" />

<size android:width="@dimen/common_15dp" android:height="@dimen/common_15dp" />

</shape>

</item>

</selector>

接下来看点击事件

@BindView(R.id.rg_fence)

RadioGroup rg_fence;

@BindView(R.id.rg_time)

RadioGroup rg_time;

rg_fence.setOnCheckedChangeListener((group, checkedId) -> {

if (checkedId == R.id.rb_no_fly_area) {

} else if (checkedId == R.id.rb_electronic_fence) {

}

});

rg_time.setOnCheckedChangeListener((group, checkedId) -> {

if (checkedId == R.id.rb_time_limit) {

} else if (checkedId == R.id.rb_permanent) {

}

});

RadioGroup和RadioButton相关推荐

  1. RadioGroup结合RadioButton使用切换Fragment片段

    界面布局activity_lan_qiu,代码xml设置如下: <?xml version="1.0" encoding="utf-8"?> < ...

  2. RadioGroup和RadioButton,单选框(Android)

    转载自:https://www.cnblogs.com/Im-Victor/p/6238437.html 仅仅是为了以后查找方便,又怕博主删掉原文.望见谅. 实现RadioButton由两部分组成,也 ...

  3. android中radiogroup作用,Android View系列---RadioGroup与RadioButton

    RadioGroup与RadioButton配合实现一组数据的单选问题. 插播一条信息,在设置RadioButton的textColor的选中效果时,不能在drawable中创建想xml,得在res/ ...

  4. RadioGroup中RadioButton默认选中问题

    当一个RadioGroup(其实只要在同一个父布局)中有若干个RadioButton时,RadioButton之间存在着互斥关系, 也就是说只能选中一个RadioButton.但是如果我们需要默认选中 ...

  5. android radiobutton 监听事件,Android View系列---RadioGroup与RadioButton

    RadioGroup与RadioButton配合实现一组数据的单选问题. 插播一条信息,在设置RadioButton的textColor的选中效果时,不能在drawable中创建想xml,得在res/ ...

  6. RadioGroup,RadioButton 和CheckBox

    为什么80%的码农都做不了架构师?>>>    RadioButton和CheckBox的区别: 1.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox ...

  7. radioGroup中radiobutton不能互斥问题

    最近在写有关兼职项目时,用到Radiogroup 来包含Radiobutton ,这本应该是最简单的事情,结果硬是弄了半个小时,radiobutton 老是到不到相互排斥的效果,在查阅相关资料后才发现 ...

  8. Button的使用(七):RadioGroup、RadioButton

    从资源文件中显示 <?xml version="1.0" encoding="utf-8"?> <RadioGroupxmlns:androi ...

  9. 高仿快递100--实战之RadioGroup和RadioButton应用

    1.RadioButton和CheckBox的差别: a.单个RadioButton在选中后,通过点击无法变为未选中 单个CheckBox在选中后.通过点击能够变为未选中 b.一组RadioButto ...

最新文章

  1. http://wenku.baidu.com/view/63e7b8270066f5335a812142.html
  2. 不一样的图片加载方式
  3. 【Java】矩阵乘法的朴素算法
  4. 贝叶斯数据分析_科研进阶项目 | 剑桥大学 | 心理学、社会学、生物医学:统计数据分析(6.13开课)...
  5. 为什么要打jar_为什么海带要打一个结?
  6. i40e驱动安装方法
  7. 游戏开发设计模式(一):单例模式
  8. 软件的生命周期与特点
  9. 计算机游戏锁怎么打开,键盘锁住了怎么解锁_解锁键盘步骤操作一览
  10. Flutter Text文本删除线、下划线设置
  11. 又一位华为工程师倒下了 程序员的世界怎么了?
  12. 【猿说VUE】Vue列表渲染
  13. RandomAccess接口的使用
  14. 仿微信朋友圈图片上传
  15. 20个强大的正则表达式
  16. win7服务器如何还原系统教程,怎么快速处理win7系统架设本地服务器的还原技巧...
  17. 建站用阿里云还是腾讯云好?
  18. 比赛题目训练系列17 (2020-2021 ACM-ICPC Brazil Subregional Programming Contest)
  19. 第七章 面向对象分析---建立动态模型
  20. adb删除图案锁屏密码

热门文章

  1. SparkStreaming与Hudi整合报错
  2. 95105105 上海铁路局订票电话骗电话费。
  3. 初识SkyWalking
  4. 乡村振兴--地理信息--科学理论
  5. 上周技术关注:Ajax: A New Approach to Web Applications
  6. Linux-定时任务
  7. 自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)
  8. A Singing Shuttle
  9. 徐荣谦《养好脾和肺 宝宝不积食不咳嗽长大个》【04】穴位健脾
  10. android 五大应用开发框架,2021Android开发社招面试解答之性能优化