Widget de botones de radio de componentes simples y grupos de botones de radio

Resumen de botones de opción y grupos de botones de opción

Hay un solo botón en un grupo de botones que se puede seleccionar. Cuando se selecciona un botón en el grupo de botones, el estado seleccionado de otros botones se cancelará. Los efectos anteriores deben usarse junto con RadioButton y RadioGroup para lograrlo. RadioGroup es un grupo de botones de radio, un contenedor que permite múltiples RadioButtons. En ausencia de RadioGroup, RadioButton se puede seleccionar por separado; cuando varios RadioButtons están en el mismo grupo de botones RadioGroup, RadioButton solo permite seleccionar uno de ellos. En diferentes RadioGroup, RadioButton no se afecta entre sí.

La clase RadioGroup es una subclase de LinearLayout, y sus métodos de uso común para configurar y controlar grupos de botones de opción se muestran en la siguiente figura

Métodos relacionados con RadioButton

método Función descriptiva
getCheckedRadioButtonId () Obtener el ID del botón seleccionado
clearCheck () Borrar estado seleccionado
comprobar (int id) Establezca la opción en el estado seleccionado mediante el parámetro D; si se pasa un 1, se borra el estado de verificación del grupo de botones de opción, lo que equivale a llamar a la operación clearCheck ()
setOnCheckedChangeListener( RadioGroup.OnCheckedChangeListenerlistener) En un grupo de botones de opción, la función de devolución de llamada que se llamará cuando cambie el estado de verificación del botón de opción. Cuando la propiedad marcada de RadioButton es verdadera, el método check (id) no activará el evento onCheckedChanged
addView (View child, int index, ViewGroup.LayoutParams params) Agregue una subvista usando los parámetros de diseño especificados. Entre ellos: child es la subvista que se agregará; índice es la posición donde se agregará la subvista; params es el parámetro de diseño de la subvista que se agregará
getText () Se usa para obtener el valor del botón de opción

A través del oyente OnCheckedChangeListener, se puede monitorear y procesar el cambio de estado de los botones de opción.

Demostración de código

El siguiente es un ejemplo simple para demostrar el uso de RadioButton y RadioGroup

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

El código de diseño es el siguiente

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left"
    android:orientation="vertical">
    <!-- 显示选择的内容 1 -->
    <TextView
        android:id="@+id/chooseTxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="我选择的是...?"
        android:textSize="30sp" />
    <!-- 单选按钮组 2 -->
    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/radioButton1"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="按钮1"/>
        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="按钮2"/>
    </RadioGroup>
    <!--清除所有选中的状态 3 -->
    <Button
        android:id="@+id/radio_clearBtn"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="清除选中"/>
    <!-- 往按钮组中添加新的单选按钮 4 -->
    <Button
        android:id="@+id/radio_addBtn"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="添加子项"/>
</LinearLayout>

El código se explica de la siguiente manera: la etiqueta 1 se usa para mostrar el título del botón seleccionado actualmente; la etiqueta 2 define un grupo de botones de opción y agrega dos botones de opción al grupo de botones; la etiqueta 3 define un botón "borrar" Se usa para borrar el estado seleccionado de todos los botones de opción en el grupo de botones, la etiqueta 4 define un botón "agregar hijo", que se utiliza para agregar nuevos botones de opción mutuamente excluyentes al grupo de botones.

A continuación, demuestre el uso del grupo de botones en la Actividad correspondiente para realizar la función de borrar el estado seleccionado de todos los botones en el grupo de botones y agregar nuevos botones de opción al grupo de botones
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

el código se muestra a continuación

package com.qst.demo2;

import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class RadioButtonActivity extends AppCompatActivity {
    
    
    private TextView chooseTxt;   //显示选择的单选按钮文本 1
    private RadioGroup radioGroup;  //按钮组
    //多个单选按钮
    private RadioButton radioButton1;
    private RadioButton radioButton2;
    private Button radioClearBtn; //清除按钮
    private Button radioAddBtn;   //新增按钮
    @Override   //重写父类的onCreatefangfa
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);  //调用父类onCreate方法创建Activity
        setContentView(R.layout.radiobutton_demo);   //设置布局为radiobutton_demo
        //初始化按钮 2
        chooseTxt = (TextView) findViewById(R.id.chooseTxt);
        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        radioButton1 = (RadioButton) findViewById(R.id.radioButton1);
        radioButton2 = (RadioButton) findViewById(R.id.radioButton2);
        radioGroup.setOnCheckedChangeListener(onCheckedChangeListener); //设置监听器
        //清除选中状态
        radioClearBtn = (Button) findViewById(R.id.radio_clearBtn);   //初始化
        radioClearBtn.setOnClickListener(onClickListener);  //设置监听器
        //增加子选项
        radioAddBtn = (Button) findViewById(R.id.radio_addBtn); //初始化
        radioAddBtn.setOnClickListener(onClickListener);  //设置监听器
    }
    /** 定义按钮组的监听事件 3 */
    private RadioGroup.OnCheckedChangeListener onCheckedChangeListener  //创建对象
            = new RadioGroup.OnCheckedChangeListener() {
    
      //使用内部类的监听器
        @Override   //重写方法
        public void onCheckedChanged(RadioGroup group, int checkedId) {
    
    
              //获取当前选中的按钮的Id
            switch (radioGroup.getCheckedRadioButtonId()) {
    
    
                case R.id.radioButton1:
                    chooseTxt.setText("我选择的是:" + radioButton1.getText());
                    break;
                case R.id.radioButton2:
                    chooseTxt.setText("我选择的是:" + radioButton2.getText());
                    break;
                default:
                    chooseTxt.setText("我选择的是: 新增" );
                    break;
                    }
        }
    };
    //定义清除状态按钮和新增按钮的单击事件 4
    private View.OnClickListener onClickListener = new View.OnClickListener() {
    
    //使用外部类的监听器
        @Override  //重写父类方法
        public void onClick(View view) {
    
    
            switch (view.getId()) {
    
    
                case R.id.radio_clearBtn:
                    radioGroup.check(-1);
                    chooseTxt.setText("我选择的是...?");
                    break;
                case R.id.radio_addBtn:
                    //新增子选项
                    RadioButton newRadio = new RadioButton(RadioButtonActivity.this);
                    newRadio.setLayoutParams(new ViewGroup.LayoutParams(
                            ViewGroup.LayoutParams.MATCH_PARENT, RadioGroup.LayoutParams.MATCH_PARENT));
                    newRadio.setText("新增");
                    radioGroup.addView(newRadio, radioGroup.getChildCount());
                    break;
                default:
                    break;
            }
        }
    };
}

El código se explica de la siguiente manera: la etiqueta 1 define una variable de atributo chooseTxt de tipo TextView, que se utiliza para obtener el texto del botón seleccionado actualmente y el tipo de definición de otros atributos; la etiqueta 2 inicializa cada variable de atributo definida en la etiqueta 1 por Asignación de variables de atributo para permitir operaciones de lógica de negocios posteriores; un objeto de escucha de grupo de botones se define en la etiqueta 3, que se utiliza para obtener el objeto de botón de radio seleccionado actualmente en el grupo de botones y mostrar el texto en el objeto chooseTxt; La etiqueta ④ define un objeto de escucha de botón común, que se utiliza para implementar las funciones de lógica empresarial de radioClearBtn y radioAddBtn. Cuando el usuario hace clic en el botón radioClearBtn, se borra el estado del botón de opción seleccionado en el grupo de botones; cuando el usuario hace clic en radioAddBtn, el sistema agregue un objeto de botón de radio al objeto radioGroup.

Declarar actividad en el archivo de manifiesto AndroidMainfest.xml
Inserte la descripción de la imagen aquí

resultado de la operación
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_42768634/article/details/115262978
Recomendado
Clasificación