UI界面和组件(四)

对话框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();
    }

 

          

 

posted @ 2021-01-10 16:30  Master_Sun  阅读(113)  评论(0)    收藏  举报