• Android开发笔记(六)——RadioButton


    RadioButton通常用来实现选择,比如说性别等

    先新建一个进行演示的activity RadioButtonActivity,此时 AndroidMainfest.xml 中会自动添加如下声明:

    <activity android:name=".RadioButtonActivity"></activity>
    

    如果没有添加则要自己手动添加,否则会跳转失败。

    之后在 activity_main.xml 中添加一个Button用来进行RadioButton控件的展示:

    <Button
        android:id="@+id/btn_radiobutton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="RadioButton"
        android:textAllCaps="false"
        />
    

    接下来在 MainActivity.java 中声明这个控件:

    private Button mBtnRadioButton;
    

    之后要在 MainActivity.java 中的 onCreate 函数中使用 findViewById 找到该button,接着设置一个点击事件,使其点击之后跳转到新的界面:

    mBtnRadioButton=findViewById(R.id.btn_radiobutton);
    mBtnRadioButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //跳转到RadioButton的演示界面
            Intent intent=new Intent(MainActivity.this,RadioButtonActivity.class);
            startActivity(intent);
        }
    });
    

    由于每次都要重复写 setOnClickListener 函数中的点击事件,这里写一个 OnClick 类来实现 View.OnClickListener 接口的功能,再写一个方法 setListener() 来设置监听器,给每个控件设置点击事件, MainActivity.java 中的整体代码如下:

    package com.example.myapplication;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class MainActivity extends AppCompatActivity {
    
        private Button mBtnTextView; //声明Button组件
        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);
            mBtnButton=findViewById(R.id.btn_button);
            mBtnEditText=findViewById(R.id.btn_edittext);
            mBtnRadioButton=findViewById(R.id.btn_radiobutton);
            setListener();
        }
    
        private void setListener(){
            OnClick onClick=new OnClick();
            mBtnTextView.setOnClickListener(onClick);
            mBtnButton.setOnClickListener(onClick);
            mBtnEditText.setOnClickListener(onClick);
            mBtnRadioButton.setOnClickListener(onClick);
        }
    
        private class OnClick implements View.OnClickListener{
    
            @Override
            public void onClick(View v) {
                Intent intent = null;
                switch (v.getId()){
                    case R.id.btn_textview:
                        //跳转到TextView演示界面
                        intent=new Intent(MainActivity.this,TextViewActivity.class);
                        break;
                    case R.id.btn_button:
                        //跳转到Button演示界面
                        intent=new Intent(MainActivity.this,ButtonActivity.class);
                        break;
                    case R.id.btn_edittext:
                        //跳转到EditText演示界面
                        intent=new Intent(MainActivity.this,EditTextActivity.class);
                        break;
                    case R.id.btn_radiobutton:
                        //跳转到RadinButton演示界面
                        intent=new Intent(MainActivity.this,RadioButtonActivity.class);
                        break;
                }
                startActivity(intent);
            }
        }
    }
    

    常用属性

    <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"
            />
        <RadioButton
            android:id="@+id/rb_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textSize="18sp"
            />
       </RadioGroup>
    

    其中 android:checked="true" 是默认选中的属性,如果添加该选项必须要给 RadioButton 设置id!!

    效果:

    自定义样式

    当想要自定义样式的时候,可以通过如下代码实现:

        <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="100dp"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="男"
                android:button="@null"
                android:checked="true"
                android:textSize="18sp"
                android:background="@drawable/radiobutton_check"
                />
            <RadioButton
                android:id="@+id/rb_4"
                android:layout_width="100dp"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="女"
                android:button="@null"
                android:textSize="18sp"
                android:layout_marginLeft="10dp"
                android:background="@drawable/radiobutton_check"
                />
        </RadioGroup>
    

    其中 android:button="@null" 是把前面的选项符号去掉,这里在 drawable 里面新建了一个 radiobutton_check.xml ,具体方法:右键 drawable ——> new ——> Drawable Resource File ,Root element设置为selector。
    radiobutton_check.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="#BECEBE"/>
                <corners android:radius="20dp"/>
            </shape>
        </item>
    
        <item android:state_checked="false">
            <shape>
                <stroke android:width="1dp"
                    android:color="#BECEBE"/>
                <corners android:radius="20dp"/>
            </shape>
        </item>
    </selector>
    

    意思是没有选择的时候是描线效果,选中之后变成实心颜色,并且整体框架有弧度。

    效果如下:

    监听事件

    这里在第一组选择框中进行测试,可以监听当前的选择。
    RadioButtonActivity.java 中进行声明:

    private RadioGroup mRg1;
    

    接着在 onCreate 函数中使用 findViewById 找到该组件,然后设置监听事件:

    mRg1=findViewById(R.id.rg_1);
    mRg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
                    RadioButton radioButton=group.findViewById(checkedId);
        Toast.makeText(RadioButtonActivity.this,radioButton.getText(),Toast.LENGTH_SHORT).show();
        }
    });
    

    效果如下:

  • 相关阅读:
    Powered by .NET Core 进展:验证高并发性能问题嫌疑犯 docker swarm团队
    暴风雨中的 online : .NET Core 版博客站点遭遇的高并发问题进展团队
    【网站公告】.NET Core 版博客站点第二次发布尝试团队
    【故障公告】发布 .NET Core 版博客站点引起大量 500 错误团队
    上周热点回顾(7.29-8.4)团队
    上周热点回顾(7.22-7.28)团队
    上周热点回顾(7.15-7.21)团队
    上周热点回顾(7.8-7.14)团队
    VMware虚拟机克隆Linux(CentOS)系统后找不到eth0网卡的问题(图文详解)
    Word在转PDF的过程中如何创建标签快速方便阅读(图文详解)
  • 原文地址:https://www.cnblogs.com/yangdd/p/13289098.html
Copyright © 2020-2023  润新知