对话框AlertDialog
一、普通对话框
<Button android:id="@+id/btn_main_normaldialog" android:text="启动常规对话框" android:onClick="startNormalDialog1" android:layout_width="match_parent" android:layout_height="wrap_content"/>
public void startNormalDialog1(View view){ new AlertDialog.Builder(this) .setCancelable(false) //不能点击外面的区域 取消对话框 .setIcon(R.drawable.dialog_icon) .setTitle("删除记录确认对话框") .setMessage("是否确认删除该条记录") .setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //dialog接受了点击事件额对话框,which 按下了按钮的 id Toast.makeText(MainActivity.this,"删除记录成功",Toast.LENGTH_SHORT).show(); } }) .setNegativeButton("否", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,"取消删除记录",Toast.LENGTH_SHORT).show(); } }) .show(); }
二、单选(复选)对话框
(一) 单选对话框
<Button android:id="@+id/btn_main_listdialog" android:text="启动单选对话框" android:onClick="startListDialog1" android:layout_width="match_parent" android:layout_height="wrap_content"/>
public void startListDialog1(View view){ String[] color = {"Green","Blue","Red","Orange","Purole"}; new AlertDialog.Builder(this) .setTitle("请选择颜色") .setSingleChoiceItems(color, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this,color[which],Toast.LENGTH_SHORT).show(); } })//checkedItem 默认选项 .setPositiveButton("OK",null) .show(); }
(二) 复选对话框
三、自定义对话框
<Button android:id="@+id/btn_main_customdialog" android:text="启动自定义视图对话框" android:onClick="startCustomDialog1" android:layout_width="match_parent" android:layout_height="wrap_content"/>
dialog_view.xml
<?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" android:orientation="vertical" android:padding="20dp"> <EditText android:id="@+id/et_dialog_name" android:hint="用户名" android:layout_width="match_parent" android:layout_height="wrap_content"/> <EditText android:id="@+id/et_dialog_psw" android:hint="密码" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout>
public void startCustomDialog1(View view){ View view_dialog = View.inflate(this,R.layout.dialog_view,null); EditText et_user = view_dialog.findViewById(R.id.et_dialog_name); EditText et_psw = view_dialog.findViewById(R.id.et_dialog_psw); new AlertDialog.Builder(this) .setTitle("自定义对话框") .setCancelable(false) .setView(view_dialog) //不能是R.id.dialog_view .setPositiveButton("登陆", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String username = et_user.getText().toString().trim(); String userpsw = et_psw.getText().toString().trim(); Toast.makeText(MainActivity.this,"用户名:"+ username+" 密码:"+ userpsw,Toast.LENGTH_SHORT).show(); } }) .show(); }
四、进度条对话框
(一)圆形
public void startProgressDialog1(View view){ ProgressDialog progressDialog = new ProgressDialog(this); //父类是AlertDialog progressDialog.setTitle("带进度条的对话框"); progressDialog.setProgress(30); progressDialog.setMax(100); progressDialog.setCancelable(false); progressDialog.show(); }
(二)水平
public void startProgressDialog1(View view){ ProgressDialog progressDialog = new ProgressDialog(this); //父类是AlertDialog progressDialog.setTitle("带进度条的对话框"); progressDialog.setProgress(30); progressDialog.setMax(100); progressDialog.setCancelable(false); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.show(); //为了使进度条动起来 创建子线程 new Thread(new Runnable() { @Override public void run() { for(int i=1;i<=20;i++){ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } progressDialog.setProgress(progressDialog.getProgress() + 5); //每隔200ms,向前推进5格 } progressDialog.dismiss();//隐藏 } }).start(); //跑起来,别忘了 }
五、日期选择对话框
public void startDatePickerDialog1(View view){ Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { Toast.makeText(MainActivity.this,"选中了 "+year+"年"+(month+1)+"月"+dayOfMonth+"日",Toast.LENGTH_SHORT).show(); } }, year,month,day).show(); }