Dialog详解(实时更新,未完待续...)
来源:互联网 发布:apache bench post 编辑:程序博客网 时间:2024/05/22 12:27
一,AlertDialog的使用
1,具有按钮的简单的AlertDialog的实现
先贴整体代码:
MainActivity.class
package com.example.dialog;import android.app.Dialog;import android.content.DialogInterface;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements DialogInterface.OnClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); AlertDialog.Builder mBuilder=new AlertDialog.Builder(this); mBuilder.setIcon(R.mipmap.ic_launcher);//设置标题处的图片 mBuilder.setTitle("AlertDialog");//设置标题 mBuilder.setMessage("你喜欢编程吗?");//设置信息 mBuilder.setPositiveButton("是的", this);//设置确认按钮 mBuilder.setNegativeButton("不告诉你",this);//设置中间按钮 mBuilder.setNeutralButton("不是",this);//设置取消按钮 mBuilder.create().show(); } @Override public void onClick(DialogInterface dialog, int which) {switch (which){ case DialogInterface.BUTTON_POSITIVE: Toast.makeText(this, "是的", Toast.LENGTH_SHORT).show(); break; case DialogInterface.BUTTON_NEGATIVE: Toast.makeText(this, "不告诉你", Toast.LENGTH_SHORT).show(); break; case DialogInterface.BUTTON_NEUTRAL: Toast.makeText(this, "不是", Toast.LENGTH_SHORT).show(); break;} }}
然后我们来仔细分析:
AlertDialog.Builder mBuilder=new AlertDialog.Builder(this);
这段代码是任何AlertDialog最核心基本的东西,采用了常见的Builder设计模式,拥有了这个Builder我们可以对AlertDialog进行初始化了。
mBuilder.setIcon(R.mipmap.ic_launcher);//设置标题处的图片
在标题处添加图片。
mBuilder.setTitle("AlertDialog");//设置标题
设置标题。
mBuilder.setMessage("你喜欢编程吗?");//设置信息
设置信息,处于Dialog中间的内容。
让后就是设置Dialog下面的Button了:
mBuilder.setPositiveButton("是的", this);//设置确认按钮 mBuilder.setNegativeButton("不告诉你",this);//设置中间按钮 mBuilder.setNeutralButton("不是",this);//设置取消按钮
这三个方法的第二个参数为:DialogInterface.OnClickListener,这里因为活动实现了DialogInterface.OnClickListener,所以直接传入this。
然后我们三个button设置了监听:
@Override public void onClick(DialogInterface dialog, int which) {switch (which){ case DialogInterface.BUTTON_POSITIVE: Toast.makeText(this, "是的", Toast.LENGTH_SHORT).show(); break; case DialogInterface.BUTTON_NEGATIVE: Toast.makeText(this, "不告诉你", Toast.LENGTH_SHORT).show(); break; case DialogInterface.BUTTON_NEUTRAL: Toast.makeText(this, "不是", Toast.LENGTH_SHORT).show(); break;}
再调用
mBuilder.create().show();
创建AlertDialog实例然后调用show方法,让AlertDialog显现出来,效果如下图:
2,具有列表的AlertDialog
需要调用一个关键方法:
mBuilder.setItems(CharSequence []items,DialogInterface.OnClickListener);mBuilder.setItems(int itemsId,DialogInterface.OnClickListener);
A,第一种方法
第一种方法第一个参数是一个字符数组,使用方法如下:
String []mItems={"Fragment","ViewPager","Toobar"}; mBuilder.setItems(mItems,this);//取代message部分,item从零开始数
很容易理解,就不讲解了。
B,第二种方法
第二种方法第一个参数是一个字符数组资源的id,调用过程如下:
首先在res/values下新建arrays.xml文件:
arrays.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string-array name="mItems"> <item>ShaPerference</item> <item>ProgressDialog</item> </string-array></resources>
然后在activity中调用:
mBuilder.setItems(R.array.mItems,this);
最后再说下它们的监听问题,它们的which值从0开始,按序增加:
@Override public void onClick(DialogInterface dialog, int which) {switch (which){ case DialogInterface.BUTTON_POSITIVE: Toast.makeText(this, "是的", Toast.LENGTH_SHORT).show(); break; case DialogInterface.BUTTON_NEGATIVE: Toast.makeText(this, "不告诉你", Toast.LENGTH_SHORT).show(); break; case DialogInterface.BUTTON_NEUTRAL: Toast.makeText(this, "不是", Toast.LENGTH_SHORT).show(); break; case 0: Toast.makeText(this, "item"+which, Toast.LENGTH_SHORT).show(); break;}
注意看最后一行,代表列表中第一个按钮。
最后效果如下:
阅读全文
0 0
- Dialog详解(实时更新,未完待续...)
- ViewPager详解(实时更新,未完待续...)
- Toolbar详解(实时更新,未完待续...)
- TabLayout详解(实时更新,未完待续...)
- 滑动菜单DrawerLayout详解(实时更新,未完待续...)
- android.hardware.camera2详解(实时更新,未完待续...)
- Git基础教程(实时更新,未完待续...)
- android - Dialog(未完待续)
- 在线客服技术详解(未完待续)
- 字符编码问题详解---未完待续
- linux route命令使用详解(未完待续)
- linux ifconfig命令详解(未完待续)
- 应用层协议详解(未完待续)
- 未完待续
- 未完待续
- 未完待续
- 未完,待续
- 未完待续~~~~~~~~~~~~~~~~
- Android BitmapFactory 解码总结
- 百练1745:Divisibility
- 2017 百度之星 复赛 Valley Numer(数位dp)
- JZOJ5358. 【NOIP2017提高A组模拟9.12】BBQ
- ThreadLocal源码分析
- Dialog详解(实时更新,未完待续...)
- Python初学笔记3
- java实现签名和解签
- live555二次开发经验总结:RTSPClient客户端与RTSPServer服务器
- 为什么STM32从Flash地址0x08000000的启动重映射
- BeanUtil
- [java] 微服务架构连载No1 spring-cloud服务发现之Eureka
- 项目3的程序2——复杂度为O(nlogn)的快速排序程序
- Centos配置yum源|个人整理