Android使用AlertDialog創(chuàng)建對(duì)話框
AlertDialog類的功能十分強(qiáng)大,它不僅可以生成帶按鈕的提示對(duì)話框,還可以生成帶列表的列表對(duì)話框,概括起來有一下4種:
1.帶確定、中立和取消等N個(gè)按鈕的提示對(duì)話框,其中的按鈕個(gè)數(shù)不是固定的,可以根據(jù)需要添加。例如,不需要中立按鈕,則可以只生成帶有確定和取消按鈕的對(duì)話框,也可以是只需有一個(gè)按鈕的對(duì)話框。
2.帶列表的列表對(duì)話框
3.帶多個(gè)單選列表項(xiàng)和N個(gè)按鈕的列表對(duì)話框
4.帶多個(gè)多選列表項(xiàng)和N個(gè)按鈕的列表對(duì)話框
在使用AlertDialog類生成對(duì)話框時(shí),常用的方法如下所示:
setTitle :為對(duì)話框設(shè)置標(biāo)題
setIcon :為對(duì)話框設(shè)置圖標(biāo)
setMessage:為對(duì)話框設(shè)置內(nèi)容
setButton:用于為提示對(duì)話框添加按鈕,可以是取消按鈕、中立按鈕和確定按鈕。需要通過為其指定int類型的whichButton參數(shù)實(shí)現(xiàn),其參數(shù)可以是DialogInterface.BUTTON_POSITIVE(確定按鈕)、BUTTON_NEGATIVE(取消按鈕)或者BUTTON_NEUTRAL(中立按鈕)。
通常情況下,使用AlertDialog類只能生成帶N個(gè)按鈕的提示對(duì)話框,要生成另外3種列表對(duì)話框,需要使用AlertDialog.Builder類,AlertDialog.Builder類提供的常用方法如下表:
setTitle :為對(duì)話框設(shè)置標(biāo)題
setIcon :為對(duì)話框設(shè)置圖標(biāo)
setMessage:為對(duì)話框設(shè)置內(nèi)容
setView : 給對(duì)話框設(shè)置自定義樣式
setItems :設(shè)置對(duì)話框要顯示的一個(gè)list,一般用于顯示幾個(gè)命令時(shí)
setSingleChoiceItems :用來設(shè)置對(duì)話框顯示一系列的單選框
setMultiChoiceItems :用來設(shè)置對(duì)話框顯示一系列的復(fù)選框
setNeutralButton :普通按鈕
setPositiveButton :給對(duì)話框添加"Yes"按鈕
setNegativeButton :對(duì)話框添加"No"按鈕
create : 創(chuàng)建對(duì)話框
show :顯示對(duì)話框
下面通過一個(gè)具體的實(shí)例說明如何使用AlertDialog類生成提示對(duì)話框和各種列表對(duì)話框
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layout1" android:gravity="center_horizontal" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顯示帶取消、中立和確定按鈕的對(duì)話框"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顯示列表的對(duì)話框"/> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顯示帶單選列表對(duì)話框"/> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="顯示帶多選列表對(duì)話框"/> </LinearLayout>
界面為圖

MainActivity:
package com.example.test;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
private boolean[] checkedItems;//記錄各個(gè)列表項(xiàng)的狀態(tài)
private String[] items;//各列表項(xiàng)要顯示的內(nèi)容
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//顯示帶取消、中立和確定按鈕的對(duì)話框
Button button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
AlertDialog alert=new AlertDialog.Builder(MainActivity.this).create();
alert.setIcon(R.drawable.ic_launcher);//設(shè)置對(duì)話框的圖標(biāo)
alert.setTitle("系統(tǒng)提示");//設(shè)置對(duì)話框的標(biāo)題
alert.setMessage("顯示帶取消、中立和確定按鈕的對(duì)話框!");//設(shè)置對(duì)話框顯示的內(nèi)容
//添加“取消”按鈕
alert.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
Toast.makeText(MainActivity.this, "您單擊了取消按鈕", Toast.LENGTH_SHORT).show();
}
});
//添加“確定”按鈕
alert.setButton(DialogInterface.BUTTON_POSITIVE, "確定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
Toast.makeText(MainActivity.this, "您單擊了確定按鈕", Toast.LENGTH_SHORT).show();
}
});
//添加“中立”按鈕
alert.setButton(DialogInterface.BUTTON_NEUTRAL, "中立",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
Toast.makeText(MainActivity.this, "您單擊了中立按鈕", Toast.LENGTH_SHORT).show();
}
});
alert.show();//顯示對(duì)話框
}
});
//顯示列表的對(duì)話框
Button button2=(Button)findViewById(R.id.button2);
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final String[] items=new String[]{"唱歌","跳舞","美術(shù)","遠(yuǎn)足旅行","攝影"};
Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.in);
builder.setTitle("請(qǐng)選擇你的愛好:");
//添加列表項(xiàng)
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您選擇了"+items[which],Toast.LENGTH_SHORT).show();
}
});
builder.create().show();//創(chuàng)建對(duì)話框并顯示
}
});
//顯示帶單選列表對(duì)話框
Button button3=(Button)findViewById(R.id.button3);
button3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final String[] items=new String[]{"標(biāo)準(zhǔn)","無聲","會(huì)議","戶外","離線"};
Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.music);
builder.setTitle("請(qǐng)選擇要使用的情景模式:");
builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您選擇了"+items[which],Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("確定", null);
builder.create().show();//創(chuàng)建對(duì)話框并顯示
}
});
//顯示帶多選列表對(duì)話框
Button button4=(Button)findViewById(R.id.button4);
button4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
checkedItems =new boolean[]{false,true,false,true,false};//記錄各列表的狀態(tài)
//各列表項(xiàng)要顯示的內(nèi)容
items=new String[]{"植物大戰(zhàn)僵尸","憤怒的小鳥","泡泡龍","開心消消樂","地鐵跑酷"};
//顯示帶單選列表框的對(duì)話框
Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.setting);
builder.setTitle("請(qǐng)選擇您喜歡的游戲:");
builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkedItems[which]=isChecked;
}
});
//為對(duì)話框添加"確定"按鈕
builder.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String result="";
for (int i = 0; i <checkedItems.length; i++) {
if(checkedItems[i]){
result+=items[i]+"、";
}
}
//當(dāng)result不為空時(shí),通過消息提示框顯示選擇的結(jié)果
if(!"".equals(result)){
result=result.substring(0,result.length()-1);//去掉最后的"、"號(hào)
Toast.makeText(MainActivity.this, "您選擇了:["+result+"]",Toast.LENGTH_SHORT).show();
}
}
});
builder.create().show();//創(chuàng)建對(duì)話框并顯示
}
});
}
}
效果如圖:
點(diǎn)擊第一個(gè)按鈕:

點(diǎn)擊第二個(gè)按鈕:

點(diǎn)擊第三個(gè)按鈕:

點(diǎn)擊第四個(gè)按鈕:


以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android自定義帶水滴的進(jìn)度條樣式(帶漸變色效果)
這篇文章主要介紹了Android自定義帶水滴的進(jìn)度條樣式(帶漸變色效果)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12
Android Studio 4.0 新功能中的Live Layout Inspector詳解
這篇文章主要介紹了Android Studio 4.0 新功能中的Live Layout Inspector,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Android通過反射實(shí)現(xiàn)強(qiáng)制停止應(yīng)用程序的方法
這篇文章主要介紹了Android通過反射實(shí)現(xiàn)強(qiáng)制停止應(yīng)用程序的方法,涉及Android的反射機(jī)制與進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下2016-02-02
詳解Flutter如何繪制曲線,折線圖及波浪動(dòng)效
這篇文章主要為大家介紹線條類圖形的繪制(正弦曲線、折線圖),并且結(jié)合 Animation 實(shí)現(xiàn)了常見的波浪動(dòng)效,感興趣的小伙伴可以了解一下2022-03-03
Android編程開發(fā)從零開始編寫一個(gè)輕量級(jí)瀏覽器
這篇文章主要為大家介紹了Android編程開發(fā)從零開始編寫一個(gè)輕量級(jí)瀏覽器過程步驟示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步2022-02-02
Android開發(fā)之圖片壓縮工具類完整實(shí)例
這篇文章主要介紹了Android開發(fā)之圖片壓縮工具類,結(jié)合完整實(shí)例形式分析了Android針對(duì)圖片壓縮的相關(guān)屬性設(shè)置與轉(zhuǎn)換操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-11-11

