android中对话框

1.普通对话框

//通过builder构建器来构造
		AlertDialog.Builder builder=new Builder(this);
		builder.setTitle("警告");
		builder.setMessage("世界上最遥远的距离就是没有网");
		builder.setPositiveButton("确定", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				System.out.println("点击了确定按钮");
				
			}
		});
		builder.setNegativeButton("取消", new OnClickListener() {
			
			@Override
			public void onClick(DialogInterface dialog, int which) {
				System.out.println("点击了取消按钮");
				
			}
		});
		//最后一步一定要记得和Toast一样  show出来
		builder.show();

在这里插入图片描述
this和getApplicationContext()的区别
this获取的是Context子类的对象
getApplicatonContext()获取的是Context直接子类的对象
可以理解为getApplicatonContext()获取的是父类对象
this获取的是子类对象
父类有的子类一定有,子类有的父类不一定有。
所以this携带的信息更多。
在这里插入图片描述
用this可以告诉系统我要把对话框挂载到哪个activity上。
单选对话框

//点击按钮 弹出一个单选对话框
		public void click2(View v){
			//通过builder构建器来构造
			AlertDialog.Builder builder=new Builder(this);
			builder.setTitle("请输入你喜欢的课程");
			final String items[]={"Android","ios","c","C++","html","c#"};
			//-1表示没有条目被选中
			builder.setSingleChoiceItems(items, -1, new OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					//[1]把选中的条目取出来
					String item=items[which];
					Toast.makeText(getApplicationContext(), item, 1).show();
					//[2]关闭对话框
					dialog.dismiss();
				}
			});
			//最后一步一定要记得和Toast一样  show出来
			builder.show();
			}

在这里插入图片描述
多选对话框

//点击按钮 弹出一个多选对话框
				public void click3(View v){
					//通过builder构建器来构造
					AlertDialog.Builder builder=new Builder(this);
					builder.setTitle("请选择你喜欢吃的水果");
					final String items[]={"苹果","香蕉","西瓜","哈密瓜","梨","榴莲"};
					checkedItems = new boolean[] {true,false,false,false,false,true};
					builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {
						
						@Override
						public void onClick(DialogInterface dialog, int which, boolean isChecked) {
							
							
						}
					});
					builder.setPositiveButton("确定", new OnClickListener() {
						
						

						@Override
						public void onClick(DialogInterface dialog, int which) {
							//把选中的条目的数据取出来
							StringBuffer sb = new StringBuffer();
							for (int i = 0; i < checkedItems.length; i++) {
								//判断一下选中的
								if(checkedItems[i]){
									String fruit=items[i];
									sb.append(fruit+"  ");
									System.out.println(sb.toString());
								}
							}
							
							Toast.makeText(getApplicationContext(),sb.toString(), 1).show();
							dialog.dismiss();
						}
					});
					//最后一步一定要记得和Toast一样  show出来
					builder.show();
					}

在这里插入图片描述
进度条对话框

//点击按钮 弹出一个进度条对话框
				public void click4(View v){
					final ProgressDialog dialog=new ProgressDialog(this);
					dialog.setTitle("正在玩命加载中。。。");
					//设置一下进度条的样式
					dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
					//最后一步 一定要记得show出来
					dialog.show();
					//创建一个子线程
					new Thread(){public void run() {
						//设置进度条最大值
						dialog.setMax(100);
						//设置当前进度
						for (int i = 0; i <=100; i++) {
						dialog.setProgress(i);
						//睡眠一会儿
						SystemClock.sleep(50);
						}
						//关闭对话框
						dialog.dismiss();
						
					};}.start();
				}

在这里插入图片描述
自定义布局对话框
①首先定义对话框中的布局
input_distance_layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/et_distance"
        android:textColor="#000"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number"/>
</LinearLayout>

②将布局转换为View

View alertView = getLayoutInflater().inflate(R.layout.input_distance_layout, null);

③定义对话框

AlertDialog myDialog = new AlertDialog.Builder(this)
                                .setIcon(R.mipmap.distance)//设置标题的图片
                                .setTitle("请输入要查询的距离")//设置对话框的标题
                                .setView(alertView)
                                //设置对话框的按钮
                                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        dialog.dismiss();
                                    }
                                })
                                .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        //关闭抽屉
                                        parentLayout.closeDrawer(leftDrawer);
                                        isLeftOpened=false;
                                        dialog.dismiss();
                                        EditText et_distance = alertView.findViewById(R.id.et_distance);
                                        tv_input.setText("请在地图上单击选择中心点");
                                        //开始缓冲查询
                                        startSelfQuery(et_distance);
                                    }
                                }).create();
                        myDialog.show();

在这里插入图片描述

发布了54 篇原创文章 · 获赞 17 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43311389/article/details/83048109