Android 常用对话框

对话框经常以小窗口的形式展现
常用的对话框有六种

对话框
普通对话框
单选对话框
多选对话框
进度条对话框
消息对话框
自定义对话框

1.普通对话框
通常有“确定”和”取消“按钮。

方法名 功能
setTitle() 设置对话框标题
setIcon() 设置对话框图标
setPositiveButton() 设置对话框添加 按钮
setMessage() 设置对话框提示信息
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new AlertDialog.Builder(this)//绑定当前窗口
                .setTitle("Dialog对话框")//设置标题
                .setIcon(R.mipmap.ic_launcher)//设置图标
                .setPositiveButton("确定",null)//添加确定按钮
                .setNegativeButton("取消",null)//添加取消按钮
                .setMessage("确定退出吗")//设置提示细信息
                .create()//创建对话框
                .show();//显示对话框
    }
}

效果图
在这里插入图片描述
2.单选对话框
单选对话框和RadioButton作用类似,只能选择一个选项,单选对话框通过AlertDialog对象调用setSingleChoiceItems()方法创建的。setSingleChoiceItems方法有三个参数,第一个参数建立数组,用于显示选项内容,第二个参数设置是否默认选中,“0”表示默认选中第一个选项,如果默认未选中,参数则写“-1”,第三个参数是设立监听。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new AlertDialog.Builder(this)//绑定当前窗口
                .setTitle("图通对话框")//设置标题
                .setIcon(R.mipmap.ic_launcher)//设置图标
                .setPositiveButton("确定",null)//添加确定按钮
                .setSingleChoiceItems(new String[]{"男","女"},0,null)//第二个参数代表默认选中哪一个,如果都不选中设置-1
                .create()//创建对话框
                .show();//显示对话框
    }
}

效果图
在这里插入图片描述
3.多选对话框
多选对话框通过调用AlertDialog的setMultiChoiceItems()方法创建。该方法有三个参数,第一个参数建立数组,用于显示选项内容,第二个参数是boolean数组,用来判断哪个选项需要勾选,如果没有选项选中则用“null”,如果有默认选中则该数组定义的长度要对应第1个参数设置的选项个数,第三个参数设置监听

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new AlertDialog.Builder(this)//绑定当前窗口
                .setTitle("图通对话框")//设置标题
                .setIcon(R.mipmap.ic_launcher)//设置图标
                .setPositiveButton("确定",null)//添加确定按钮
                //第一个参数显示内容,第二个参数代表哪个选项需要默认被勾选,如果没有则为null
        //第三个参数:为每一个多选项绑定一个监听器
                .setMultiChoiceItems(new String[]{"大学生","教师","政府官员"},null,null)
                .create()//创建对话框
                .show();//显示对话框
    }
}

效果
在这里插入图片描述
4.进度条对话框
在Android中提供了圆形进度条和水平进度条两种样式,通过setProgressStyle()方法设置进度条样式。常量ProgressDialog.STYLE_HORIZONTAL代表水平进度条,ProgressDialog.STYLE_SPINNER代表圆形进度条。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ProgressDialog prodialog;
        prodialog = new ProgressDialog(this);
        prodialog.setTitle("进度条对话框");
        prodialog.setIcon(R.mipmap.ic_launcher);
        prodialog.setMessage("正在下载。。。");
        prodialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//ProgressDialog.STYLE_HORIZONTAL代表水平滚动条
        //ProgressDialog.STYLE_SPINNER代表圆形进度条
        prodialog.show();
    }
}

效果
在这里插入图片描述
5.消息对话框
显示时间的长短是通过常量Toast.LENGTH_SHORT和Toast.LENGTH_LONG控制的

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //当前对话框、显示内容、显示时长Toast.LENGTH_LONG长时间显示
        //Toast.LENGTH_SHORT 短时间显示
        Toast.makeText(this,"你好",Toast.LENGTH_LONG).show();
    }
}

效果
在这里插入图片描述
6.自定义对话框
要注意的是Java的文件要在一个里面新建,然后选Android app

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="标题"
    android:textSize="20sp"
    android:gravity="center"
   android:background="#cf8be1" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:id="@+id/message"
        android:background="#dac7e7"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定"
            android:textSize="20sp"
            android:id="@+id/btn_ok"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="取消"
            android:textSize="20sp"
            android:id="@+id/btn_cancel"/>


    </LinearLayout>
</LinearLayout>
</RelativeLayout>

package com.example.hp.myapplication;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;

/**
 * Created MyDialogby hp on 2020/4/11.
 */

public class MyDialog extends Dialog {
    private String message;
    public MyDialog(Context context,String message){
        super(context);
        this.message=message;
    }
    public void onCreate(Bundle savedInstancState) {
        super.onCreate(savedInstancState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.mydialog);

        TextView tv = findViewById(R.id.message);

        tv.setText(message);
        Button btnOk = findViewById(R.id.btn_ok);
        btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.i("MyDialog", "确定按钮被点击");
                dismiss();//关闭对话按钮
            }
        });
        Button btnCancel=findViewById(R.id.btn_cancel);
        btnCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.i("MyDialog","取消按钮被点击");
                dismiss();//关闭对话按钮
            }
        });
}



}
package com.example.hp.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import static android.os.Build.VERSION_CODES.M;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDialog  myDialog=new MyDialog(this,"自定义对话框");
        myDialog.show();

    }
}

效果
在这里插入图片描述
为按钮添加了监听事件,所以点击的时候会显示
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章