4.5 RadioButton (botão de rádio)
- Uso básico do RadioButton (botão de opção) e manipulação de eventos:
Como no botão de opção de título, apenas um pode ser selecionado, então precisamos colocar o RadioButton no grupo de botões RadioGroup para realizar a função de rádio. Familiarize-se com como usar RadioButton primeiro, um exemplo simples de seleção de gênero: Além disso, podemos definir a propriedade de orientação para o RadioGroup externo e, em seguida, definir o arranjo de RadioButton, seja vertical ou horizontal.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linerLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请选择性别:"
android:textSize="23sp"/>
<RadioGroup
android:id="@+id/group1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/buttonMan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"
android:checked="true"/>
<RadioButton
android:id="@+id/buttonWoman"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
<Button
android:id="@+id/btnpost"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提交"/>
</LinearLayout>
- Obter o valor selecionado: Existem dois métodos aqui
A primeira é definir um ouvinte de evento setOnCheckChangeListener para RadioButton
Crie um novo RadioButtonActivity.java no pacote do aplicativo java.
package com.example.myapplication;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class RadioButtonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.radio_button);
Button btnchage = (Button) findViewById(R.id.btnpost);
final RadioGroup radgroup = (RadioGroup) findViewById(R.id.group1);
//第一种是为RadioButton 设置一个事件监听器setOnCheckChangeListener
radgroup.setOnCheckedChangeListener(((group, checkedId) -> {
RadioButton radioButton = (RadioButton) findViewById(checkedId);
Toast.makeText(getApplicationContext(),"你选了:"+radioButton.getText(),Toast.LENGTH_LONG).show();
}));
}
}
PS: Outra coisa a ter em mente é adicionar um id a cada RadioButton, caso contrário, a função do botão de rádio não funcionará! ! !
O segundo método é obter o valor do botão de opção selecionado clicando em outros botões. Claro, também podemos obtê-lo diretamente, dependendo dos requisitos.
package com.example.myapplication;
import android.os.Bundle;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class RadioButtonActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.radio_button);
Button btnchage = (Button) findViewById(R.id.btnpost);
final RadioGroup radgroup = (RadioGroup) findViewById(R.id.group1);
//第一种是为RadioButton 设置一个事件监听器setOnCheckChangeListener
radgroup.setOnCheckedChangeListener(((group, checkedId) -> {
RadioButton radioButton = (RadioButton) findViewById(checkedId);
Toast.makeText(getApplicationContext(),"你选了:"+radioButton.getText(),Toast.LENGTH_LONG).show();
}));
//第二种方法是通过单击其他按钮获取选中单选按钮的值,当然我们也可以直接获取,这个看需求。
btnchage.setOnClickListener((v -> {
for (int i = 0; i < radgroup.getChildCount(); i++) {
RadioButton rb = (RadioButton) radgroup.getChildAt(i);
if (rb.isChecked()){
Toast.makeText(getApplicationContext(),"你选择的是:"+rb.getText(),Toast.LENGTH_LONG).show();
break;
}
}
}));
}
}
Análise de código: Aqui definimos um ouvinte de evento setOnClickListener para o botão enviar. Cada vez que é clicado, ele percorre o RadioGroup uma vez para determinar qual botão está selecionado. Podemos obter as informações relevantes do RadioButton através dos seguintes métodos.
- getChildCount ( ) obtém o número de botões de opção no grupo de botões;
- getChinldAt (i): Obtém nosso botão de opção de acordo com o valor do índice;
- isChecked ( ): Determina se o botão está marcado.
测试:将main包下的AndroidMainifest.xml文件中的<application>标签下<activity>标签中的android:name的值改为.RadioButtonActivity
android:name=".RadioButtonActivity"
启动测试。
当切换选择内容时:
当提交时: