Android中的对话框(一)AlertDialog --转载自孟可老师博客160303
2016-03-18 00:00
537 查看
摘要: 最近学习Android, 开始觉得和iOS有很大的不同,十分别扭,但写到RecyclerView和各种Dialog后发现,Android的控件太丰富了,打算写下来 分享给大家,今天先写Dialog原文地址:http://blog.csdn.net/cocoa_m/article/details/50601303最近学习Android, 开始觉得和iOS有很大的不同,十分别扭,但写到RecyclerView和各种Dialog后发现,Android的控件太丰富了,打算写下来 分享给大家,今天先写Dialog先说一下Dialog : 就是对话框 上个图,
总结Dialog有几种比较常用的形式:1. AlertDialog (非常强大 功能丰富)2.ProgressDialog (从名字就能看出 是做进度条用的)3.DatePickerDialog(这个也不难看出 是做时间选择的, 看效果真是震惊了宝宝)4.TimePickerDialog (虽然列出来 但不打算写它 )今天介绍AlertDialog , 有六种第一种: 简单对话框![](http://static.oschina.net/uploads/img/201603/18092803_D5Mv.jpg)
第六种: 自定义View 对话框//在代码中我们不难看出, 给自定义的View 注入一个布局 ,就可以直接setView() ,这里写了一个TableLayout的布局 不知是否常用
![](http://static.oschina.net/uploads/img/201603/18092803_48nY.jpg)
AlertDialog.Builder builder = new AlertDialog.Builder(this);// 设置对话框标题builder.setTitle("简单对话框");//设置图标builder.setIcon(R.mipmap.ic_launcher);//设置对话框内容 \n 可以直接换行builder.setMessage("对话框的内容\n 换行了");//设置确定按钮 和 按钮的点击事件builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //点击确定后 Toast.makeText(AlertDlgActivity.this, "点击了确定", Toast.LENGTH_SHORT).show(); } });//设置取消按钮 和 按钮的点击事件builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //点击取消后 Toast.makeText(AlertDlgActivity.this, "点击了取消", Toast.LENGTH_SHORT).show(); } });//创建并显示builder.create().show(); //如果把按钮设置在create之后 就不会显示了
⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️
就长最上面那样 就不上图了第二种 : 简单列表对话框我定义了一个items 一下用到列表的 都用这个了~private final String[] items= {"Android","iOS","h5"};代码如下 :
![](http://static.oschina.net/uploads/img/201603/18092803_D5Mv.jpg)
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("简单列表对话框").setIcon(R.mipmap.ic_launcher);builder.setItems(items, new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDlgActivity.this, "选中了" + items[which], Toast.LENGTH_SHORT).show();}});builder.create().show();
第三种:单选列表项对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("单选列表对话框").setIcon(R.mipmap.ic_launcher);// 设置单选列表项, 默认选中第二项builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {}});//设置确定按钮 和 按钮的点击事件builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //点击确定后 }});//设置取消按钮 和 按钮的点击事件builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //点击取消后 }});builder.create().show();[/code]
第四种: 多选列表对话框
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("多选列表对话框").setIcon(R.mipmap.ic_launcher);//参数2: boolean[] 有两个作用 :// 1.设置初始化时选中哪个列表项// 2.动态的获取多选列项中的选中状态builder.setMultiChoiceItems(items, new boolean[]{true, false, false},new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) {
Log.i("mmmmkkkk", "+++" + items[which] + " ---- " + isChecked);
}});builder.create().show();第五种:自定义列表项对话框从名字上可以看出, 我们可以自己定义这个列表项的样子 ,那就简单定义最基本的 里边只有一个TextView 的列表项需要注意的是: 这需要一个Adapter 适配器 就像我们做ListView那样以下是Adapter的代码 ,继承了BaseAdapter
/** * Created by Cocoamk on 16/1/22. */public class MyBuliderAdapter extends BaseAdapter { private String[] data; private Context context; @Override public int getCount() { return data.length;} @Override public Object getItem(int position) { return data[position];} @Override public long getItemId(int position) { return position;} public MyBuliderAdapter(String[] data, Context context) { this.data = data; this.context = context;} @Override public View getView(int position, View convertView, ViewGroup parent) {
//在这绑定布局convertView = LayoutInflater.from(context).inflate(R.layout.array_item,null);TextView textView = (TextView) convertView.findViewById(R.id.item_text);textView.setText(data[position]); return convertView;}}
在Java代码中:
//AlertDialog.Bulder提供了一个setAdapterde()的方法 设置对话框的内容AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("自定义列表项对话框").setIcon(R.mipmap.ic_launcher);//创建适配器MyBuliderAdapter adapter = new MyBuliderAdapter(items, this);//setAdapter 可以传入ArrayAdapter SimpleAdapter BaseAdapter 的对象builder.setAdapter(adapter, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {Toast.makeText(AlertDlgActivity.this, "--" + items[which], Toast.LENGTH_SHORT).show();}});builder.create().show();
![](http://static.oschina.net/uploads/img/201603/18092803_CS2Z.jpg)
TableLayout login = (TableLayout) getLayoutInflater().inflate(R.layout.login_item,null); new AlertDialog.Builder(this).setTitle("自定义View对话框").setIcon(R.mipmap.ic_launcher).setView(login).setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {}}).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {}}).create().show();
XML代码如下:
<?xml version="1.0" encoding="utf-8"?><TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/loginForm"><TableRow><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="输入用户名"/><EditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" /></TableRow><TableRow><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="输入密码"/><EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" /></TableRow></TableLayout>至此, 6中AlertDialog的基本用法就都会用啦~ 希望对大家有帮助 }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories