前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Android 开发第七讲 RadioButton (单选按钮)

Android 开发第七讲 RadioButton (单选按钮)

作者头像
IBinary
发布于 2020-09-01 07:26:55
发布于 2020-09-01 07:26:55
1.6K00
代码可运行
举报
文章被收录于专栏:逆向技术逆向技术
运行总次数:0
代码可运行

Android 开发第七讲 RadioButton (单选按钮)

一丶重构代码

之前我们响应按钮事件都是直接通过匿名内部类的方式. new一个对象来实现OnClick方法.

现在因为按钮较多.所以新建内部类,实现接口为 View.OnClickListener 并且实现里面的OnClick方法

代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.ibinary.myapplication;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.sax.StartElementListener;
import android.view.View;
import android.widget.Button;
// Alt + Shift + Entery 引入此包
public class MainActivity extends AppCompatActivity {

//    声明Button 一会使用 如果找不到则引入这个包 Alt+Shift+Enter
    private Button m_BtnText;
    private Button m_BtnEditView;
    private Button m_ButtonView;
    private Button m_RadioButtonView;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        m_BtnText = (Button) findViewById(R.id.Btn_Text);
        m_BtnEditView = (Button) findViewById(R.id.EdtView1);
        m_ButtonView = (Button) findViewById(R.id.m_BtnView);
        m_RadioButtonView = (Button) findViewById(R.id.RadioButton_Id);
        SetListener();
    }
    private void SetListener()
    {
        MyOnClick myOnClick = new MyOnClick();
        m_BtnText.setOnClickListener(myOnClick);
        m_BtnEditView.setOnClickListener(myOnClick);
        m_ButtonView.setOnClickListener(myOnClick);
        m_RadioButtonView.setOnClickListener(myOnClick);
    }
//    实现接口,在街口里面判断
    private class MyOnClick  implements View.OnClickListener{

    @Override
    public void onClick(View view) {

        Intent intent = null;
        switch (view.getId()){
            case R.id.Btn_Text:
                //跳转到TextView中
                intent = new Intent(MainActivity.this,TextViewActive.class);
                break;
            //跳转到Button页面
            case R.id.m_BtnView:
                intent =  new Intent(MainActivity.this,MyButton.class);
                break;
            //跳转到ExtView页面
            case R.id.EdtView1:
                intent = new Intent(MainActivity.this,EdtActive.class);
                break;
            //跳转到RadioButton页面
            case R.id.RadioButton_Id:
                intent = new Intent(MainActivity.this,RadioActivity.class);
                break;
        }
        if (intent == null) {
            return;
        }

        startActivity(intent);
    }
}
}

二丶RadioButton属性与xml编写

2.1 RadioButton属性

RadioButton是继承自TextView 所以一些属性是可以用的.

单独定义一个RadioButton不会有效果的.原因是.两个RadioButton以上. 都属于一个分组.

当这个分组中定义了两个 RadioButton的时候.那么你点击RadioButton1 那么RadioButton2就是未选中状态.看下如下xml描述

常用属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
android:checked = "true"  默认选中,使用这个属性那么 其他的RadioButton必须设置ID
android:button="@null"   去掉按钮属性,不使用小园框,自定义一个
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:padding="15dp">

<!--    使用RadioButton必须放到一个分组里面-->
    <RadioGroup
        android:id="@+id/rg_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
<!--        RadioButton放到里面-->
        <RadioButton
            android:id="@+id/rd_1"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="男"
            android:textSize="20sp">

        </RadioButton>


        <RadioButton
            android:id="@+id/rd_2"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:text="女"
            android:textSize="20sp">

        </RadioButton>

    </RadioGroup>
</RelativeLayout>

界面则为下,选择男,则女就是未选中,否则就是相反

因为他们在一个组里面.所以只能单选

2.2 RadioButton实现自定义

实现自定义还是使用 android:background属性,来制定一个选择状态的xml. 来实现自定义的选中和未选中

但是前提要 设置 android:button="@null"才可以.

状态选择器XML如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    tools:ignore="MissingDefaultResource">
    <!--    状态选择器 android:state_checked = true代表选中-->
    <item android:state_checked="true">
        <!--        如果是选中,那么我们使用shape画一个-->
        <shape>
            <!--            设置实心颜色,并且设置圆角-->
            <solid android:color="#ff0000"></solid>
            <corners android:radius="10dp"></corners>
        </shape>
    </item>

    <!--    否则设置为绿色-->
    <item android:state_checked="false">
        <!--        如果是未选中,那么我们使用shape画一个-->
        <shape>
            <!--            设置描边形式,并且设置圆角-->
            <stroke android:width="1dp" android:color="#0ca30c"></stroke>
            <corners android:radius="10dp"></corners>
        </shape>
    </item>
</selector>

xml如下布局如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <!--    自定义-->
    <RadioGroup
        android:id="@+id/rg_2"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:orientation="horizontal"
        android:layout_below="@id/rg_1"
        android:layout_marginTop="1dp"
        >
        <!--        RadioButton放到里面-->
        <RadioButton
            android:id="@+id/rd_3"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:button="@null"
            android:background="@drawable/selector_radiobutton"
            android:text="男1"
            android:textSize="20sp">

        </RadioButton>


        <RadioButton
            android:id="@+id/rd_4"
            android:layout_width="100dp"
            android:layout_height="40dp"
            android:button="@null"
            android:background="@drawable/selector_radiobutton"
            android:text="女1"
            android:textSize="20sp">

        </RadioButton>

    </RadioGroup>

请注意selector_radiobutton 文件名一定小写.

实现效果如下

自定义了一个实现效果

三丶RadioButton的监听事件

既然是单选那么单选之后肯定会有监听事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.ibinary.myapplication;

import androidx.appcompat.app.AppCompatActivity;

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

public class RadioActivity extends AppCompatActivity {

    private RadioGroup m_rg1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radio);

        m_rg1 = (RadioGroup)findViewById(R.id.rg_1);
        //响应Checked Listener
        m_rg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            //两个参数,一个是组,一个是选中的ID. 可以通过组里面的finviewById找到当前是哪个Id
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                RadioButton RaButton = radioGroup.findViewById(i);
                Toast.makeText(RadioActivity.this, RaButton.getText(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}

只需要设置事件,实现 RadioGroup.OnCheckedChangeListener() 即可.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
7b2美化-列表文章上浮效果
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
4480
7b2美化-列表文章上浮效果
7b2美化-首页添加导航会员区块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
8070
WordPress网站B2主题会员展示模块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
1.1K0
WordPress网站B2主题会员展示模块
7b2美化-添加好看的底部介绍
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
7100
7b2美化-添加好看的底部介绍
WordPress动漫图片主题cxudy模板代码
WordPress多功能CX-UDY图片主题是基于wordpress开源程序开发的简洁时常自适应图片模板,适用于各种图片写真类型、图片壁纸类、博客站、多媒体分享站等类型站点。图片主题效果演示http://m.bokequ.com/dongman/gc
博客趣
2024/02/14
4210
WordPress动漫图片主题cxudy模板代码
关于本博客皮肤样式配置
先向博客园申请开通博客 向博客园申请博客js权限 这两步谷歌吧, 我已经申请好了,没法截图 设置博客皮肤模板 否则下面css,js会跟其他模板不兼容 修改页面定制css代码 *,.Cal{paddin
iginkgo18
2020/09/27
5090
关于本博客皮肤样式配置
高质量编码-轨迹管理平台(CSS样式)
样式仿照百度地图鹰眼轨迹服务早期版本的web端轨迹管理台,地图和UI都使用了夜色风格。
MiaoGIS
2020/12/17
5250
高质量编码-轨迹管理平台(CSS样式)
7b2美化-首页添加动态北极熊搜索样式
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
7470
7b2美化-首页添加动态北极熊搜索样式
菜鸡博客开……开……开源了!
因为很多人找我要过博皮源码,所以本宝宝经过深思熟虑,最终决定把自己的源码分享给大家!
attack
2018/09/21
2.9K0
HTML5环形音乐播放器
通过 HTML5,音乐在网络上东山再起。添加音频文件就像插入图像那样简单,并且用户能在浏览器外播放音乐,从而实现惊人的音乐体验。<audio> 标签的推出使您不再需要外部音乐播放器,在网站上实现真正的声音融合。 随着 HTML5 的出现,发生了一些重大变化,特别是在音乐和音频方面。开发人员不再要求 web 冲浪者使用 Adobe Flash、Apple QuickTime 或 Microsoft Windows 媒体播放器等特殊的播放器。这意味着用户不必担心是否有最新的兼容插件(或任何播放器插件)。他们只需打开自己喜欢的浏览器并聆听能发出声音的任何内容,如音乐、有声读物、FX 声音效果或朋友和家人录制的消息。
业余草
2019/01/21
5.2K0
HTML5环形音乐播放器
一套简约漂亮的响应式博客园主题皮肤分享给你们
  最近在自己博客园逛的时候,总会有一个感觉,真是太丑了,然而又觉得自己暂时抽不出太多的时间来搭建自己的博客系统,上网一搜才发现,原来我们可以自定义博客的布局以及样式的,那我就在网上找到了一个哥们的自定义Hexo经典主题Ligt的CSS文件,然后根据自己的审美及需要来做改动后上传以此来使自己的博客看起来像是自己搭建的个人博客。因为我总觉得一个良好的界面才会给博友读下去的欲望,否则很恶心,连自己都这么觉得。下面我们就来分享这个替换步骤教程。
阿豪聊干货
2018/08/09
2.1K0
一套简约漂亮的响应式博客园主题皮肤分享给你们
Joe主题加大图
1.复制代码 2.修改index.php 3.修改post.php 4.增加css文件 5.引入css文件 6.站长总结
堡主
2023/03/04
6320
Joe主题加大图
7b2美化-首页添加导航区块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/16
8490
主题hondsome折腾,css修改
主题hondsome折腾,css修改 ps:我现在已经没有使用hondsome主题了,不过依旧保留在后台。感情颇深。 代码如下: 加入到自定义css 或者创建css文件,在footer引入即可 //首页头像自动旋转// .thumb-lg{ width:130px; } .avatar{ -webkit-transition: 0.4s; -webkit-transition: -webkit-transform 0.4s ease-out; transition: tra
乐心湖
2020/07/31
1.1K0
底部关于我们美化代码
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
2.8K0
底部关于我们美化代码
分享一个自用emlog手机底部导航加样式代码
看到很多朋友都要这个手机端底部导航索性就分享了,这玩意其实我也不是不舍得发,是懒得而已 这玩意我都是扣别人的所以这个东西自己扣就行了,如果你不会扣那我赶紧我分享出来你也不会用。
用户8099761
2023/05/11
7580
7b2主题评论气泡
这个功能来自于https://github.com/515184405/barrage,版权归他所有。
小狐狸说事
2022/11/17
4140
7b2主题评论气泡
纯CSS3绘制的逼真,呆萌,超酷的CSS3动画纯CSS3人物行走动画 逼真炫酷CSS3动画纯CSS3绘制的小猫笑脸动画 超呆萌纯CSS3绘制可爱小男孩动画 超酷面部表情
纯CSS3人物行走动画 逼真炫酷CSS3动画 CSS3实在是太强大了,今天分享的CSS3动画非常神奇,它可以模拟人物行走,而且人物行走动画非常逼真。人物行走时的跨步动画时多张图片重叠实现的。有了这个
wblearn
2018/08/27
1.7K0
纯CSS3绘制的逼真,呆萌,超酷的CSS3动画纯CSS3人物行走动画 逼真炫酷CSS3动画纯CSS3绘制的小猫笑脸动画 超呆萌纯CSS3绘制可爱小男孩动画 超酷面部表情
Butterfly主题美化
在butterfly/source/css/创建一个universe.css文件。
ymktchic
2022/01/18
1.6K0
Butterfly主题美化
Typecho美化主题教程
但是现在我们会发现,整个网站的标签都变成了这样,那我们如何只让他在文章中出现呢? 在第一个代码块ol前面加上#post即可使用了。
回忆大大
2021/08/09
1.5K0
推荐阅读
相关推荐
7b2美化-列表文章上浮效果
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档