Android studio教程学习笔记7——RadioButton

第二章 UI组件

2-5 RadioButton

通常在一个组里面单选的时候会用到这个(结合RadioGroup使用),比如性别选男女

  • 常用属性
  • 自定义样式
  • 监听事件

新建一个Activity叫做RadioButtonActivity
在这里插入图片描述
下面是MainActivity.java(之前是每一项都写一次,现在把他们写成一个方法):

package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Switch;

public class MainActivity extends AppCompatActivity {

    private Button mBtnTextView;  //声明一个Button类型的变量,变量名为mBtnTextView
    // 如果有报错,在出错地方按Alt+Enter键,会自动导入包
    private Button mBtnButton;
    private Button mBtnEditText;
    private Button mBtnRadioButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBtnTextView = findViewById(R.id.btn_textview);  //找activity_main文件中设置的id
        mBtnButton = findViewById(R.id.btn_button);  //找activity_main文件中设置的id
        mBtnEditText = findViewById(R.id.btn_edittext);
        mBtnRadioButton = findViewById(R.id.btn_radiobutton);
        setListeners();
    }

    private void setListeners(){
        OnClick onClick = new OnClick();
        mBtnTextView.setOnClickListener(onClick);
        mBtnButton.setOnClickListener(onClick);
        mBtnEditText.setOnClickListener(onClick);
        mBtnRadioButton.setOnClickListener(onClick);
    }

    private class OnClick implements View.OnClickListener {  //然后按快捷键Ctrl+O

        @Override
        public void onClick(View v) {
            Intent intent = null;
            switch (v.getId()) { //根据不同的id执行相应的操作
                case R.id.btn_textview:
                    //跳转到TextView演示
                    intent = new Intent(MainActivity.this, TextViewActivity.class);
                    startActivity(intent);
                    break;
                case R.id.btn_button:
                    //跳转到Button演示
                    intent = new Intent(MainActivity.this, ButtonActivity.class);
                    startActivity(intent);
                    break;
                case R.id.btn_edittext:
                    //跳转到EditText演示
                    intent = new Intent(MainActivity.this, EditTextActivity.class);
                    startActivity(intent);
                    break;
                case R.id.btn_radiobutton:
                    //跳转到RadioButton演示
                    intent = new Intent(MainActivity.this, RadioButtonActivity.class);
                    startActivity(intent);
                    break;
            }
            startActivity(intent);
        }
    }
}

常用属性

activity_radio_button.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="15dp">
    
    <RadioGroup
        android:id="@+id/rg_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <RadioButton
            android:id="@+id/rb_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:checked="true"
            android:textSize="18sp"
            android:textColor="#FF6600"/>

        <RadioButton
            android:id="@+id/rb_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textSize="18sp"
            android:textColor="#FF6600"/>

    </RadioGroup>



</RelativeLayout>

android:checked="true"表示默认选中“男”,注意:如果要加这个属性,就要给每一个RadioButton都设置id,不设置的话这个属性会失效的

运行:
在这里插入图片描述

自定义样式

下面再设置一组,换一个样式:

新建一个drawable文件叫selector_orange_radiobutton.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">
        <shape>
            <solid android:color="#AA6600"/>
            <corners android:radius="15dp"/>
        </shape>
    </item>

    <item android:state_checked="false">
        <shape>
            <stroke android:width="1dp"
                android:color="#AA6600"/>
            <corners android:radius="15dp"/>
        </shape>
    </item>
</selector>

activity_radio_button.xml里新加的内容为:

 <RadioGroup
        android:id="@+id/rg_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@id/rg_1"
        android:layout_marginTop="50dp">

        <RadioButton
            android:id="@+id/rb_3"
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="男"
            android:button="@null"
            android:background="@drawable/selector_orange_radiobutton"
            android:checked="true"
            android:textSize="18sp"
            android:textColor="#000"/>

        <RadioButton
            android:id="@+id/rb_4"
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="女"
            android:button="@null"
            android:background="@drawable/selector_orange_radiobutton"
            android:textSize="18sp"
            android:textColor="#000"/>

    </RadioGroup>

运行:
在这里插入图片描述

监听事件

RadioButtonActivity.java:

package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class RadioButtonActivity extends AppCompatActivity {

    private RadioGroup mRg1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radio_button);

        mRg1=findViewById(R.id.rg_1);
        mRg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) { //当前组和当前选中的id
                RadioButton radioButton = group.findViewById(checkedId); //根据checkedId通过group.findViewById就能得到当前的radioButton。
                Toast.makeText(RadioButtonActivity.this,radioButton.getText(),Toast.LENGTH_SHORT).show(); //显示所监听到的
            }
        });
    }
}

运行:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45550460/article/details/106037686