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();

    }
}

效果
在這裏插入圖片描述
爲按鈕添加了監聽事件,所以點擊的時候會顯示
在這裏插入圖片描述

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