andrid实践项目四-对话框Dialog的各种用法

2024-03-14 09:58

本文主要是介绍andrid实践项目四-对话框Dialog的各种用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先来个简单的列子熟悉dialog是如何创建使用的

老规矩 先看dailog的继承关系

java.lang.Objectandroid.app.Dialog

dialog是直接继承object 与view没有半毛钱关系。
一。先来看看最常见的dialog,也就是AlertDialog(警告框),alertdialog是非阻塞式的。

public class AlertDialogtest extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.dailog);Button btn1=(Button) findViewById(R.id.btn1);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDialog();}});}public void Dialog(){AlertDialog.Builder bulider = new AlertDialog.Builder(this);bulider.setIcon(R.drawable.ic_launcher);bulider.setMessage("你什么时候回寝室");bulider.setTitle("标准对话框");bulider.setCancelable(false);// 设置是否可以取消对话框//bulider.setPositiveButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});// 设置及其按钮bulider.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stub}});AlertDialog dialog = bulider.create();dialog.show();}}

运行截图
代码逻辑还是很清楚的,设置button的点击事件。然后再写个dialog方法构建一个alretdialog。构建dialog时一定要引用builder

AlertDialog.Builder bulider = new AlertDialog.Builder(this);
builder.set~***
builder.set~***//这几句话都是用来设置dialog的属性
builder.set~***
然后用builder.creat();和builder.show();将builder显示出来。

再来设置一个类似listview 风格的alertdialog

运行效果如下所示
代码如下

public class AlertDialogtest2 extends Activity {private TextView text1;private TextView text2;private String[] data = { "苹果1", "苹果2", "苹果3", };private String[] datadetails = { "富含维生素c1", "富含维生素c2", "富含维生素c3", };private int NUM = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.dailog2);text1 = (TextView) findViewById(R.id.mych);text2 = (TextView) findViewById(R.id.mytext);Button btn1 = (Button) findViewById(R.id.btn1);btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDialog();}});}public void Dialog() {Dialog dialog = new AlertDialog.Builder(AlertDialogtest2.this).setIcon(R.drawable.ic_launcher).setTitle("请选择你喜欢吃的水果?").setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {text1.setText(data[NUM]);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}}).setSingleChoiceItems(AlertDialogtest2.this.data, 0, new DialogInterface.OnClickListener() {// setSingleChoiceItems()方法@Overridepublic void onClick(DialogInterface dialog, int which) {text2.setText(datadetails[which]);NUM = which; // 保存选项的索引}}).create();dialog.show();}}

相比之前的标准框多了一个setSingleChoiceItems()方法,其中which指定了当前选择的是那一项。

DIY登录框和LayoutInflater

先写布局文件xml 只需要一个按钮就行了
然后写要引入的弹出框的布局文件login.xml

<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"tools:context="com.example.demotest.MainActivity" ><LinearLayout
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="账号:"/><EditText
            android:id="@+id/edtlogin"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1000"android:hint="输入账号" /></LinearLayout><LinearLayout
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码:" /><EditText
            android:id="@+id/edtpassword"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1000"android:hint="输入密码" /></LinearLayout></LinearLayout>``````

在builder alertdialog 的时候引入一句就可以导入登录布局了
.setView(R.layout.login)

然后验证登陆的代码如下

public class AlertDialogtest3 extends Activity {private EditText edt1;private EditText edt2;private String string_userString;private String string_passwdString;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.dailog3);Button btn1 = (Button) findViewById(R.id.btn1);btn1.setOnClickListener(new OnClickListenerImpl());}private class OnClickListenerImpl implements OnClickListener{  @Override  public void onClick(View v) {  LayoutInflater layoutInflater=LayoutInflater.from(AlertDialogtest3.this);//获得layoutInflater对象  View view=layoutInflater.from(AlertDialogtest3.this).inflate(R.layout.login, null);//获得view对象  EditText edit_user=(EditText)view.findViewById(R.id.edtlogin);//获取控件  EditText edit_passwd=(EditText)view.findViewById(R.id.edtpassword);  //拿到输入的账号密码      string_userString=edit_user.getText().toString();  string_passwdString=edit_passwd.getText().toString();  Dialog dialog=new AlertDialog.Builder(AlertDialogtest3.this).setTitle("用户登录").setView(view).setPositiveButton("登录", new DialogInterface.OnClickListener() {   public void onClick(DialogInterface dialog, int which) {  if(string_userString.equals("admin")&&string_passwdString.equals("4011")){  Toast.makeText(AlertDialogtest3.this, "登录成功", Toast.LENGTH_SHORT).show();  }else{  Toast.makeText(AlertDialogtest3.this, "登录失败", Toast.LENGTH_SHORT).show();  }        }  }).setNegativeButton("取消", new DialogInterface.OnClickListener() {      @Override  public void onClick(DialogInterface dialog, int which) {  // 取消按钮事件   }  }).create();  dialog.show();  }         }   

拿到输入的账号密码 ,那是个坑。有兴趣的自己把gettext()换个位置试试……
这里写图片描述

这篇关于andrid实践项目四-对话框Dialog的各种用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/808041

相关文章

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤