欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android基础控件RadioGroup使用方法详解

程序员文章站 2023-10-31 08:38:04
本文为大家分享了android基础控件radiogroup的使用,供大家参考,具体内容如下 1.简单介绍 radiogroup可以提供几个选项供用户选择,但只能选择其中的一个。其下...

本文为大家分享了android基础控件radiogroup的使用,供大家参考,具体内容如下

1.简单介绍

radiogroup可以提供几个选项供用户选择,但只能选择其中的一个。其下面可以横着或者竖着挂几个radiobutton,也可以挂载其他控件(如textview)。radiogroup的相应事件一般不由下面的radiobutton响应,而是直接由radiogroup响应。实现radiogroup.oncheckedchangelistener接口即可监听radiogroup。radiobutton也是派生自compoundbutton,也可以通过修改button属性来修改图标,但是通过button属性修改往往会使文字和图标挨得很近。这时候我们可以设置radiobutton的drawableleft属性和drawablepadding属性来使图标和文字挨得远一点(同时把button属性设置成@null)。下图是radiogroup的使用效果。

Android基础控件RadioGroup使用方法详解

2.简单使用

下面是radiogroup的简单实现代码。

radio_group_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/radio_choose"/>

  <!--普通状态-->
  <item android:drawable="@drawable/radio_unchoose"/>
</selector>

activity_radio_group.xml

<?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

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();
      }
    });
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。