您的位置:首页 > 移动开发 > Android开发

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 , 有六种第一种: 简单对话框
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"};代码如下 :
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();
第六种: 自定义View 对话框//在代码中我们不难看出, 给自定义的View 注入一个布局 ,就可以直接setView() ,这里写了一个TableLayout的布局 不知是否常用
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的基本用法就都会用啦~ 希望对大家有帮助 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android AlertDialog