Android中AlertDialog各種對話框的用法實(shí)例詳解
目標(biāo)效果:


程序運(yùn)行,顯示圖一的幾個按鈕,點(diǎn)擊按鈕分別顯示圖二到圖六的對話框,點(diǎn)擊對話框的某一項(xiàng)或者按鈕,也會顯示相應(yīng)的吐司輸出。
1.activity_main.xml頁面存放五個按鈕。
activity_main.xml頁面:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <Button android:id="@+id/btnSure" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="確認(rèn)對話框"/> <Button android:id="@+id/btnRadio" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="60dp" android:text="單選對話框"/> <Button android:id="@+id/btnCheck" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="110dp" android:text="多選對話框"/> <Button android:id="@+id/btnList" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="160dp" android:text="列表對話框"/> <Button android:id="@+id/btnMy" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="210dp" android:text="自定義對話框"/> </RelativeLayout>
2.新建dialog.xml頁面,作為最后一個自定義對話框的布局頁面。
dialog.xml頁面:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/edInput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="2" > <requestFocus /> </EditText> <Button android:id="@+id/btnOk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="確定" /> </LinearLayout> <ImageView android:id="@+id/ivPicture" android:layout_width="wrap_content" android:layout_height="280dp" android:src="@drawable/white" /> <TextView android:id="@+id/textView1" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout>
3.MainActivity.java頁面處理對話框的彈出及點(diǎn)擊事件。
MainActivity.java頁面:
package com.example.alertdialog;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
private Button btnSure,btnRadio,btnCheck,btnList,btnMy;
private String[] sexList={"男","女"};//單選列表
private String[] likeList={"籃球","足球","打游戲","聽音樂","看電影"};//多選列表
private String[] itemList={"項(xiàng)目經(jīng)理","策劃","測試","美工","程序員"};//列表
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getId();//獲取控件id
click();//按鈕綁定點(diǎn)擊事件
}
/*獲取控件id*/
private void getId() {
btnSure = (Button) findViewById(R.id.btnSure);
btnRadio=(Button) findViewById(R.id.btnRadio);
btnCheck=(Button) findViewById(R.id.btnCheck);
btnList=(Button) findViewById(R.id.btnList);
btnMy=(Button) findViewById(R.id.btnMy);
}
/*按鈕綁定點(diǎn)擊事件*/
private void click() {
btnSure.setOnClickListener(this);
btnRadio.setOnClickListener(this);
btnCheck.setOnClickListener(this);
btnList.setOnClickListener(this);
btnMy.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnSure:
showDialog1();//確認(rèn)對話框
break;
case R.id.btnRadio:
showDialog2();//單選對話框
break;
case R.id.btnCheck:
showDialog3();//多選對話框
break;
case R.id.btnList:
showDialog4();
break;
case R.id.btnMy:
showDialog5();
break;
}
}
/*確認(rèn)對話框*/
private void showDialog1() {
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("確認(rèn)對話框");//設(shè)置標(biāo)題
builder.setIcon(R.drawable.ic_launcher);//設(shè)置圖標(biāo)
builder.setMessage("確認(rèn)對話框提示內(nèi)容");//設(shè)置內(nèi)容
/*添加對話框中確定按鈕和點(diǎn)擊事件*/
builder.setPositiveButton("確定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this,"點(diǎn)擊了確定按鈕",Toast.LENGTH_SHORT).show();
}
});
/*添加對話框中取消按鈕和點(diǎn)擊事件*/
builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(MainActivity.this,"點(diǎn)擊了取消按鈕",Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog=builder.create();//獲取dialog
dialog.show();//顯示對話框
}
/*單選對話框*/
private void showDialog2() {
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("性別");//設(shè)置標(biāo)題
builder.setIcon(R.drawable.ic_launcher);//設(shè)置圖標(biāo)
/*參數(shù)一位單選列表文字,參數(shù)二為默認(rèn)第幾個選中(-1默認(rèn)不選中),參數(shù)三是創(chuàng)建監(jiān)聽器*/
builder.setSingleChoiceItems(sexList,-1,new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String sex=sexList[which];
Toast.makeText(MainActivity.this,"這個人性別為"+sex, Toast.LENGTH_SHORT).show();
}
});
/*添加對話框中取消按鈕點(diǎn)擊事件*/
builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();//關(guān)閉對話框
}
});
AlertDialog dialog=builder.create();//獲取dialog
dialog.show();//顯示對話框
}
/*多選對話框*/
private void showDialog3() {
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("愛好");//設(shè)置標(biāo)題
builder.setIcon(R.drawable.ic_launcher);//設(shè)置圖標(biāo)
/*參數(shù)同單選對話框一樣,另外第二個參數(shù)默認(rèn)不選中為null,而不是-1*/
builder.setMultiChoiceItems(likeList,null,new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
Toast.makeText(MainActivity.this,"我喜歡"+likeList[which],Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"我不喜歡"+likeList[which],Toast.LENGTH_SHORT).show();
}
}
});
/*添加對話框中取消按鈕點(diǎn)擊事件*/
builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();//關(guān)閉對話框
}
});
AlertDialog dialog=builder.create();//獲取dialog
dialog.show();//顯示對話框
}
/*列表對話框*/
private void showDialog4() {
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("部門列表");//設(shè)置標(biāo)題
builder.setIcon(R.drawable.ic_launcher);//設(shè)置圖標(biāo)
builder.setItems(itemList,new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this,"我點(diǎn)擊了"+itemList[which],Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog=builder.create();//獲取dialog
dialog.show();//顯示對話框
}
/*自定義對話框*/
private void showDialog5() {
LayoutInflater inflater=LayoutInflater.from(this);
View view=inflater.inflate(R.layout.dialog,null);//獲取自定義布局
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setTitle("自定義對話框");//設(shè)置標(biāo)題
builder.setIcon(R.drawable.ic_launcher);//設(shè)置圖標(biāo)
builder.setView(view);//設(shè)置自定義樣式布局到對話框
AlertDialog dialog=builder.create();//獲取dialog
dialog.show();//顯示對話框
}
}
4.運(yùn)行就出現(xiàn)目標(biāo)效果了。
關(guān)于Android中AlertDialog各種對話框的用法就給大家介紹這么多,希望對大家有所幫助!
- Android中自定義對話框(Dialog)的實(shí)例代碼
- Android自定義對話框Dialog的簡單實(shí)現(xiàn)
- Android實(shí)現(xiàn)底部對話框BottomDialog彈出實(shí)例代碼
- 詳解Android 全局彈出對話框SYSTEM_ALERT_WINDOW權(quán)限
- Android實(shí)現(xiàn)點(diǎn)擊AlertDialog上按鈕時不關(guān)閉對話框的方法
- 實(shí)例詳解Android自定義ProgressDialog進(jìn)度條對話框的實(shí)現(xiàn)
- Android 之BottomsheetDialogFragment仿抖音評論底部彈出對話框效果(實(shí)例代碼)
- Android實(shí)現(xiàn)退出界面彈出提示對話框
- Android仿QQ消息提示實(shí)現(xiàn)彈出式對話框
- Android對話框使用方法詳解
相關(guān)文章
Android中AlertDialog各種對話框的用法實(shí)例詳解
這篇文章主要介紹了Android中AlertDialog各種對話框的用法在項(xiàng)目開發(fā)中經(jīng)常用的到,本文給大家介紹的非常詳細(xì),具有參考借鑒價值2016-04-04
Android直播軟件搭建之實(shí)現(xiàn)背景顏色滑動漸變效果的詳細(xì)代碼
這篇文章主要介紹了Android直播軟件搭建之實(shí)現(xiàn)背景顏色滑動漸變效果的詳細(xì)代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Android實(shí)現(xiàn)自由拖動并顯示文字的懸浮框
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)自由拖動并顯示文字的懸浮框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-01-01
Android EditText監(jiān)聽回車鍵并處理兩次回調(diào)問題
這篇文章主要介紹了Android EditText監(jiān)聽回車鍵并處理兩次回調(diào)問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
Android使用系統(tǒng)相機(jī)進(jìn)行拍照的步驟
這篇文章主要介紹了Android使用系統(tǒng)相機(jī)進(jìn)行拍照的步驟,幫助大家更好的進(jìn)行Android開發(fā),感興趣的朋友可以了解下2020-12-12
Flutter 包管理器和資源管理使用學(xué)習(xí)
這篇文章主要為大家介紹了Flutter 包管理器和資源管理使用學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Android實(shí)現(xiàn)生成二維碼并保存到相冊
這篇文章主要介紹了如何利用Android實(shí)現(xiàn)二維碼的生成,并且保存到本地相冊。文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編學(xué)習(xí)一下2022-04-04

