单选框的用法即几种常见对话框

article/2025/11/6 0:34:39

一、单选框

RadioGroup的组事件,可以将各自不同的RadioButton,设定与同一个RadioGroup组里的按钮,做出单一选择。
RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮。
RadioGroup 属性:继承自android.view.View类
android:checkedButton  :这是子单选按钮应该在默认情况下此单选组内进行检查的ID。一般不用。

android:orientation="horizontal"  设置单选框布局方向。horizontal为横向   vertical为垂直方向

RadioButton的属性:

android:checked="true"  设置单选框为选中,默认为没有选中。只能在一个RadioButton中设定(单选)。

布局例子:

<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.rp.MainActivity" ><EditTextandroid:id="@+id/et_name"android:layout_width="fill_parent"android:layout_height="wrap_content"android:hint="@string/name" /><RadioGroupandroid:id="@+id/rg_Group"android:layout_width="wrap_content"android:layout_height="wrap_content"     android:orientation="horizontal"><RadioButtonandroid:id="@+id/rb_male"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/male" /><RadioButtonandroid:id="@+id/rb_female"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/rb_margin"android:checked="true"android:text="@string/female" /><RadioButtonandroid:id="@+id/rb_other"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="@dimen/rb_margin"android:text="@string/other" /></RadioGroup><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:text="@string/compute"/></LinearLayout></span>
布局显示如下图:



也可以设定单选框的监听:

RadioGroup.OnCheckedChangeListener(){

public void onCheckedChanged(RadioGroup group, int checkedId)

}

int checkedRadioButtonId = rg_Group.getCheckedRadioButtonId();判断选择的单选框的id。

举例:

<span style="font-size:18px;">// [2]判断选中性别int checkedRadioButtonId = rg_Group.getCheckedRadioButtonId();// [3]判断一下具体选中的性别int sex = 0; // 默认值为0switch (checkedRadioButtonId) {case R.id.rb_male: // 选中的是男sex = 1;break;case R.id.rb_female: // 选中的是女sex = 2;break;case R.id.rb_other: // 代表选中的是人妖sex = 3;break;}// [4]判断性别if (sex == 0) {Toast.makeText(mContext, "亲 请选择性别 ", 0).show();return;}
</span>
</pre><pre name="code" class="java"><span style="font-size:18px;">下面为监听:</span>
<span style="font-size:18px;">public class RadioTest extends Activity {  TextView textview;  RadioGroup radiogroup;  RadioButton radio1,radio2,radio3,radio4;  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  textview=(TextView)findViewById(R.id.textview1);  radiogroup=(RadioGroup)findViewById(R.id.radiogroup1);  radio1=(RadioButton)findViewById(R.id.radiobutton1);  radio2=(RadioButton)findViewById(R.id.radiobutton2);  radio3=(RadioButton)findViewById(R.id.radiobutton3);  radio4=(RadioButton)findViewById(R.id.radiobutton4);  radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {  @Override  public void onCheckedChanged(RadioGroup group, int checkedId) {  // TODO Auto-generated method stub  if(checkedId==radio2.getId())  {  DisplayToast("正确答案:"+radio2.getText()+",恭喜你,回答正确!");  }else  {  DisplayToast("请注意,回答错误!");  }  }  });  }  </span>


二、常用的对话框:

1、普通对话框

先看图片:

我现在布局里面定义个一个监控的button按钮,主界面点击“普通对话框”会弹出普通对话框

对话框一般为固定的代码模式:

<span style="font-size:18px;">// 点击按钮 弹出一个普通对话框public void click1(View v) {// 构建AlertDialogAlertDialog.Builder builder = new Builder(this);builder.setTitle("警告");//设定标题builder.setMessage("世界上最遥远的距离是没有网络");//设定内容builder.setPositiveButton("确定", new OnClickListener() {
<span style="white-space:pre">		</span>//固定写法:确定按钮,在左边@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("点击了确定按钮 执行的逻辑");}});builder.setNegativeButton("取消", new OnClickListener() {//固定写法:取消按钮,在右边@Overridepublic void onClick(DialogInterface dialog, int which) {System.out.println("点击了取消按钮");}});// 最后一步一定要记得 show出来builder.show();}</span>
<span style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;"><span style="font-size:18px;"> builder.setNeutralButton 设置第三个按钮的普通对话框,在中间,有时会用到,跟上面用法一样</span></span>
<span style="font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;"><span style="font-size:18px;">
</span></span>
<span style="font-family:Consolas, Courier New, Courier, mono, serif;font-size:18px;"><span style="line-height: 18px;">2,单选对话框</span></span>
<span style="font-family:Consolas, Courier New, Courier, mono, serif;font-size:18px;"><span style="line-height: 18px;">先看图片:</span></span>
<span style="font-family:Consolas, Courier New, Courier, mono, serif;font-size:18px;"><span style="line-height: 18px;"><img src="https://img-blog.csdn.net/20160818212124329?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
</span></span>
 

单选框设定一个标题和单选列表,需要一个String 数组传输。代码如下

<span style="font-size:18px;">// 点击按钮 弹出一个单选对话框public void click2(View v) {// 构建AlertDialogAlertDialog.Builder builder = new Builder(this);builder.setTitle("请选择您喜欢的课");final String items[] = { "Android", "ios", "php", "c", "C++", "html" };builder.setSingleChoiceItems(items, -1, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 取出点中的条目String item = items[which];Toast.makeText(getApplicationContext(), item, 1).show();// 关闭当前对话框dialog.dismiss();}});// 最后一步一定要记得 show出来builder.show();}
</span>
<span style="font-size:18px;">builder.setSingleChoiceItems(items, -1, new OnClickListener()</span>
<span style="font-size:18px;">
</span>
中的-1是代表数组中没有被初始化选中的,如果为0代表数组中第一个元素被初始化选中,1代表数组第二个元素被选、、、、依次类推


3、多选对话框:

先看图片如下



就是比多选框多个几个选择。先看代码如下

<span style="font-size:18px;">// 点击按钮 弹出一个多选对话框public void click3(View v) {// 构建AlertDialogAlertDialog.Builder builder = new Builder(this);builder.setTitle("请选择您喜欢吃的水果");final String items[] = { "榴莲", "苹果", "葡萄", "香蕉", "黄瓜", "火龙果", "荔枝","梨子","西瓜","哈密瓜","猕猴桃"};final boolean[] checkedItems = { true, false, false, false, false,false, true , false, false, false, false};builder.setMultiChoiceItems(items, checkedItems,new OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which,boolean isChecked) {}});builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {StringBuffer sb = new StringBuffer();sb.append("你喜欢的水果有:");// [1]把你选中的水果给取出来for (int i = 0; i < checkedItems.length; i++) {if (checkedItems[i]) {// 就证明是选中的String fruit = items[i];sb.append(fruit + " ");}}Toast.makeText(getApplicationContext(), sb.toString(), 1).show();// 关闭对话框dialog.dismiss();}});</span>
相比单选,初始化时,多了个boolean数组,根据true false来判断每一项是否被初始选中。还有不同的是,多选是根据一个确定按钮来触发点击事件。


4、进度条对话框

先看效果:

A,圆圈模式:



B,横向进度条模式


<span style="font-size:18px;">//进度条对话框public void click4(View v) {//与进度相关的控件都可以直接在子线程更新ui final ProgressDialog dialog = new ProgressDialog(this);dialog.setTitle("正在玩命加载ing");dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//横向进度条</span>
<span style="font-size:18px;"><span style="white-space:pre">		</span>//dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 圆圈模式dialog.show();//设置进度条的最大值 dialog.setMax(100);new Thread(){public void run() {for (int i = 0; i <= 100; i++) {//设置当前的进度 //不需要catch异常SystemClock.sleep(50);//睡眠50毫秒dialog.setProgress(i);}//关闭对话框dialog.dismiss();};}.start();		}}</span>

如上代码中,记得耗时操作要在子线程中运行。


总结:学会单选框的布局和监听。掌握几种常用的对话框,记得最后要关闭对话框  dialog.dismiss();



http://chatgpt.dhexx.cn/article/E2PPtFoc.shtml

相关文章

HTML基础1:单选框

一.单选框基础 1.基本写法&#xff1a;<input type“radio” / > 2.实现默认选中&#xff0c;使用checked。 3.若存在多个单选框都在一个分组里&#xff0c;要实现同一时间只能选中一个单选框设置name属性相同即可。 4.提交数据到后台时&#xff0c;后台接收的是value设…

Radio单选框

Radio单选框 在一组备选项中进行单选 基础用法 使用Radio组件&#xff0c;只需要设置v-model绑定变量&#xff0c;选中意味着变量的值为相应Radio label属性的值&#xff0c;label可以是string、number或boolean。 <template><el-radio v-model"radio" …

Handler消息机制

1 线程间通信 线程间通信&#xff1a;ITC&#xff0c;Inter-Thread Communication 同一进程中线程与线程之间是共享内存的。对于可以共享的变量任何线程都可以访问和修改&#xff0c;但是要做好同步。 线程之间不会彼此干扰&#xff0c;是因为有内存管理机制。 2 Handler消息…

全面讲解 Handler机制原理解析 (小白必看)

简介 Handler是Android中提供的一种异步回调机制&#xff0c;也可以理解为线程间的消息通信。 为了避免ANR,我们通常会把一些耗时操作&#xff08;比如&#xff1a;网络请求、I/O操作、复杂计算等&#xff09;放到子线程中去执行&#xff0c;而当子线程需要修改UI时则子线程需要…

Android :安卓学习笔记之 Handler机制 的简单理解和使用

Android Handler机制的简单理解和使用 Handler机制1、Handler使用的引出2、背景和定义3、作用和意义4、主要参数5、工作原理及流程5.1、对应关系 6、深入分析 Handler机制源码6.1、Handler机制的核心类6.2、核心方法6.3、方式1&#xff1a;使用 Handler.sendMessage&#xff08…

多线程通信---Handler机制

目录 作者简介&#xff1a; 1. 概述&#xff1a; 1.1 如何把子线程中计算的结果传给主线程&#xff1f; 2.handler异步通信系统 2.1 多线程通信过程 3.代码演示 3.1 子线程部分 3.2 主线程handler部分 3.3 MainActivity代码 3.4 布局代码 4.效果演示 5.拓展 作者简介&a…

android handler的机制原理,Android Handler 机制实现原理分析

handler在安卓开发中是必须掌握的技术&#xff0c;但是很多人都是停留在使用阶段。使用起来很简单&#xff0c;就两个步骤&#xff0c;在主线程重写handler的handleMessage( )方法&#xff0c;在工作线程发送消息。但是&#xff0c;有没有人想过这种技术是怎么实现的呢&#xf…

android源码学习-Handler机制及其六个核心点

前言&#xff1a; 该文属于安卓源码探究专栏中的文章&#xff0c;专栏所有文章清单链接如下&#xff0c;欢迎大家阅读。 安卓源码探究 一、Handler机制介绍 1.1 Handler是什么&#xff1f; Handler是安卓中很常用的一种机制&#xff0c;其主要用于线程之间的通信。 1.2 为…

Handler机制原理----全解

Handler机制&#xff0c;我们就会想到&#xff0c;他有四个重要的对象组成&#xff0c;分别是&#xff1a;Handler&#xff0c;Message,MessageQueue,Looper. 那Handler是如何工作的呢&#xff1f; 例如&#xff0c;你想刷新主界面的TextView&#xff0c;无奈你不在主线程&am…

Android面试必问之Handler机制

Android面试必问之Handler机制 1. 作用2. 基本使用2.1 创建Handler实例2.2 发送消息2.3 使用post方法2.4 使用sendMessage方法2.5 通过Message与Handler进行通信的步骤 3. 源码分析3.1 为什么Handler能够切换线程执行&#xff1f;3.2 Handler.post(Runnable) 方法是运行在新的线…

java中handler机制_自己动手撸一个Handler,让你彻底搞懂Handler机制,揍吻你服不服?...

原标题:自己动手撸一个Handler,让你彻底搞懂Handler机制,揍吻你服不服? 一、关于Handler Handler对于我们Android开发者来说应该是再熟悉不过了,这也是在android中最重要的消息机制,特别是在面试笔试时,Handler机制也是最常问到的话题。今天我们就来动手撸一个自己写的H…

一文搞懂Handler机制

什么是Handler? Handler是进程内部、线程间的一种通信机制。 Handler、Looper、MessageQueen、Message的关系 Message: 消息对象 MessageQueen: 存储消息对象的队列 Looper:负责循环读取MessageQueen中的消息&#xff0c;读到消息之后就把消息交给Handler去处理。 Handler&…

Handler机制(异步消息处理机制)

Android的异步消息处理由四个部分组成&#xff1a;Message、Handler 、MessageQueue和Looper。 先抛出自己的几个问题供自己以后进行回顾复习&#xff1a; 1、为什么需要进行异步消息处理&#xff1f; 大量耗时的操作我们一般是另开一个子线程来进行处理&#xff0c;但是在子线…

Android - 浅谈 Handler 机制

熟悉 Android 开发的小伙伴都知道&#xff0c;不能再非主线程中修改 UI 控件&#xff0c;而且当时老师告诉我们就是在非主线程的代码修改 UI 控件可以用 Handler。以至于后来我也都是这么做的&#xff0c;最近有人问我这个自定义的 Handler 为啥下面都是黄色的&#xff0c;是不…

【Android】Handler机制详解

【Android】Handler机制详解 本文是在 Carson带你学Android 作者的异步通信 专栏中Handler的基础上学习整理的kotlin版本&#xff0c;并且Android源码部分也更新至最新。 1.使用Handler消息传递机制的原因 2.相关概念 概念定义作用备注Main Thread应用程序初次启动时会自动开…

一文搞懂Handler机制原理

前言 Android提供了Handler来满足线程间的通信&#xff0c;开发中不管直接还是间接基本离不开Handler的使用&#xff0c;通常Handler被我们用来做子线程更新UI线程的工具&#xff0c;可以说只要有子线程与主线程通信的地方就会有Handler。 工欲善其事必先利其器&#xff0c;熟…

handler机制原理

一,什么是handler handler是消息机制的一个上层接口 更新UI的操作 耗时完毕后发送消息给主线程更新UI 耗时操作只能在子线程中执行,Android是线程不安全的你不能在子线程中更新UI 所以Android引入了handler机制 handler通过发送和处理message和Runnable对象来关联相对应线程的…

Android Handler消息机制原理最全解读(持续补充中)

本文主要详细去解读Android开发中最常使用的Handler&#xff0c;以及使用过程中遇到的各种各样的疑问。 Handler 在Android开发的过程中&#xff0c;我们常常会将耗时的一些操作放在子线程&#xff08;work thread&#xff09;中去执行&#xff0c;然后将执行的结果告诉UI线程…

Handler机制

1.为何引入Handler机制 Handler是线程间通讯的机制&#xff0c;Android中&#xff0c;网络访问、文件处理等耗时操作必须放到子线程中去执行&#xff0c;否则将会造成ANR异常。 ANR异常&#xff1a;Application Not Response 应用程序无响应 产生ANR异常的原因&#xff1a;在…

Handle消息机制解析

概述 Handler消息机制(由Handler/Looper/MessageQueue等构成)&#xff0c;Android有大量的消息驱动方法来进行交互&#xff0c;就像Android的四大组件(Activity、Service、Broadcast、ContentProvider)的启动过程交互&#xff0c;都离不开Handler的消息机制&#xff0c;所以An…