Android基础控件RadioGroup使用方法详解
Android的基础控件RadioGroup在Android开发中是一种常见的用户界面控件,它提供了一组单选按钮的集合,用户只能选择其中的一个选项。本文将详细介绍RadioGroup的使用方法并通过示例代码演示。
RadioGroup介绍
RadioGroup可以提供几个选项供用户选择,但只能选择其中的一个。其下面可以横着或者竖着挂几个RadioButton,或者也可以挂载其他控件(如TextView)。RadioGroup的相应事件一般不由下面的RadioButton响应,而是直接由RadioGroup响应。实现RadioGroup.OnCheckedChangeListener接口即可监听RadioGroup。RadioButton也是派生自CompoundButton,也可以通过修改button属性来修改图标,但是通过button属性修改往往会使文字和图标挨得很近。这时候我们可以设置RadioButton的drawableLeft属性和drawablePadding属性来使图标和文字挨得远一点(同时把button属性设置成@null)。下图是RadioGroup的使用效果。
RadioGroup简单使用
下面是RadioGroup的简单实现代码。
radio_group_selector.xml
1 2 3 4 5 6 7 8 | <? 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/radio_choose" /> <!--普通状态--> < item android:drawable = "@drawable/radio_unchoose" /> </ selector > |
activity_radio_group.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | <? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" xmlns:app = "http://schemas.android.com/apk/res-auto" xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".RadioGroupActivity" android:orientation = "vertical" > < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:textSize = "18sp" android:textColor = "#000000" android:text = "这是横着放的RadioGroup" /> < RadioGroup android:id = "@+id/rg_horizontal_demo" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "horizontal" > < RadioButton android:layout_width = "0dp" android:layout_height = "wrap_content" android:layout_weight = "1" android:checked = "false" android:text = "好" android:textSize = "18sp" android:id = "@+id/rb_horizontal_good" android:textColor = "#000000" /> < RadioButton android:layout_width = "0dp" android:layout_height = "wrap_content" android:layout_weight = "1" android:checked = "false" android:text = "很好" android:textSize = "18sp" android:id = "@+id/rb_horizontal_very_good" android:textColor = "#000000" /> </ RadioGroup > < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:textSize = "18sp" android:textColor = "#000000" android:text = "这是竖着放的RadioGroup" /> < RadioGroup android:id = "@+id/rg_vertical_demo" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "vertical" > < RadioButton android:layout_width = "wrap_content" android:layout_height = "0dp" android:layout_weight = "1" android:checked = "false" android:text = "好" android:textSize = "18sp" android:id = "@+id/rb_vertical_good" android:textColor = "#000000" /> < RadioButton android:layout_width = "wrap_content" android:layout_height = "0dp" android:layout_weight = "1" android:checked = "false" android:text = "很好" android:textSize = "18sp" android:id = "@+id/rb_vertical_very_good" android:textColor = "#000000" /> </ RadioGroup > < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:textSize = "18sp" android:textColor = "#000000" android:text = "这是改了图标竖着放的RadioGroup" /> < RadioGroup android:id = "@+id/rg_vertical_custom_demo" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "vertical" > < RadioButton android:button = "@drawable/radio_button_selector" android:layout_width = "wrap_content" android:layout_height = "0dp" android:layout_weight = "1" android:checked = "false" android:text = "这个是直接设置button的RadioButton" android:textSize = "18sp" android:id = "@+id/rb_vertical_custom_good" android:textColor = "#000000" /> < RadioButton android:button = "@null" android:drawableLeft = "@drawable/radio_button_selector" android:drawablePadding = "10dp" android:layout_width = "wrap_content" android:layout_height = "0dp" android:layout_weight = "1" android:checked = "false" android:text = "这个是设置drawableLeft属性的RadioButton" android:textSize = "18sp" android:id = "@+id/rb_vertical_custom_very_good" android:textColor = "#000000" /> </ RadioGroup > </ LinearLayout > |
RadioGroupActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package xyz.strasae.androidlearn.my; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class RadioGroupActivity extends AppCompatActivity { RadioGroup rg_horizontal_demo; RadioGroup rg_vertical_demo; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_radio_group); rg_horizontal_demo = findViewById(R.id.rg_horizontal_demo); rg_vertical_demo = findViewById(R.id.rg_vertical_demo); rg_horizontal_demo.setOnCheckedChangeListener( new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { RadioButton rb_temp = findViewById(radioGroup.getCheckedRadioButtonId()); Toast.makeText(RadioGroupActivity. this , String.format( "你选择了%s" , rb_temp.getText().toString()), Toast.LENGTH_SHORT).show(); } }); rg_vertical_demo.setOnCheckedChangeListener( new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { RadioButton rb_temp = findViewById(radioGroup.getCheckedRadioButtonId()); Toast.makeText(RadioGroupActivity. this , String.format( "你选择了%s" , rb_temp.getText().toString()), Toast.LENGTH_SHORT).show(); } }); } } |
本文地址:http://www.9zoku.com/ruanjianbc/276.html
版权声明:本文内容来自互联网,该文版权归原作者所有。本站仅提供信息存储空间服务,不拥有文章所有权,不承担相关法律责任。若对本内容有异议或投诉请与管理员联系 5604882#qq.com(请将#换成@)。
版权声明:本文内容来自互联网,该文版权归原作者所有。本站仅提供信息存储空间服务,不拥有文章所有权,不承担相关法律责任。若对本内容有异议或投诉请与管理员联系 5604882#qq.com(请将#换成@)。