AlertDialog的功能是很是強大的,它能夠建立各類對話框,它的結構分爲:圖標區、標題區、內容區、按鈕區共四個區域。以這樣的思路區建立AlertDialog是很是簡單的。android
建立AlertDialog的七大步驟:佈局
對步驟4中的六種方法進行簡單解析:ui
下面對六種方法進行一一實例演示this
先建立一個佈局文件,以下spa
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center_horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 顯示一個普通的文本編輯框組件 --> <EditText android:id="@+id/show" android:layout_width="match_parent" android:layout_height="wrap_content" android:editable="false"/> <!-- 定義一個普通的按鈕組件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="simple" android:text="簡單對話框"/> <!-- 定義一個普通的按鈕組件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="simpleList" android:text="簡單列表項對話框" /> <!-- 定義一個普通的按鈕組件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="singleChoice" android:text="單選列表項對話框" /> <!-- 定義一個普通的按鈕組件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="multiChoice" android:text="多選列表項對話框" /> <!-- 定義一個普通的按鈕組件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="customList" android:text="自定義列表項對話框" /> <!-- 定義一個普通的按鈕組件 --> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="customView" android:text="自定義View對話框" /> </LinearLayout>
1.setMessage方法3d
public void simple(View source) { AlertDialog.Builder builder = new AlertDialog.Builder(this) //設置對話框標題 .setTitle("簡單對話框") //設置圖標 .setIcon(R.drawable.tools)
.setMessage("我沒有掉頭髮"); // 爲AlertDialog.Builder添加按鈕 setPositiveButton(builder); // 爲AlertDialog.Builder添加按鈕 setNegativeButton(builder).create().show();
2.setItems方法code
//簡單列表項對話框 private String[] items = new String[]{"說好不哭", "等你下課", "七里香", "可愛女人"}; public void simpleList(View source) { AlertDialog.Builder builder = new AlertDialog.Builder(this) //設置對話框標題 .setTitle("簡單列表項對話框") //設置圖標 .setIcon(R.drawable.tools) //設置簡單的列表項內容 .setItems(items, (dialog, wh) -> show.setText("你選中了《" + items[wh] + "》")); // 爲AlertDialog.Builder添加「肯定」按鈕 setPositiveButton(builder); // 爲AlertDialog.Builder添加「取消」按鈕 setNegativeButton(builder).create().show(); }
3.setSingleChoiceItems方法orm
//單選列表項對話框 public void singleChoice(View source) { AlertDialog.Builder builder = new AlertDialog.Builder(this) //設置對話框標題 .setTitle("單選列表項對話框") //設置標題 .setIcon(R.drawable.tools) //設置單選列表項,默認選中第二項(索引爲1) .setSingleChoiceItems(items, 1, (dialog, which) -> show.setText("你選中了《" + items[which] + "》")); // 爲AlertDialog.Builder添加「肯定」按鈕 setPositiveButton(builder); // 爲AlertDialog.Builder添加「取消」按鈕 setNegativeButton(builder).create().show(); }
4.setMultiChoiceItems方法xml
public void multiChoice(View source) { AlertDialog.Builder builder = new AlertDialog.Builder(this) //設置對話框標題 .setTitle("多選列表項對話框") //設置標題 .setIcon(R.drawable.tools) //設置多選列表項,設置勾選第二項、第四項 .setMultiChoiceItems(items, new boolean[]{false, true, false, true}, null); // 爲AlertDialog.Builder添加「肯定」按鈕 setPositiveButton(builder); // 爲AlertDialog.Builder添加「取消」按鈕 setNegativeButton(builder).create().show(); }
5.setAdapter方法對象
public void customList(View source) { AlertDialog.Builder builder = new AlertDialog.Builder(this) //設置對話框標題 .setTitle("自定義列表項對話框") //設置圖標 .setIcon(R.drawable.tools) //設置自定義列表項 .setAdapter(new ArrayAdapter(this, R.layout.array_item, items), null); // 爲AlertDialog.Builder添加「肯定」按鈕 setPositiveButton(builder); // 爲AlertDialog.Builder添加「取消」按鈕 setNegativeButton(builder).create().show(); }
6.setView方法
public void customView(View source) { //login.xml界面佈局文件 TableLayout loginForm = (TableLayout) getLayoutInflater().inflate(R.layout.login, null); new AlertDialog.Builder(this) // 設置對話框的圖標 .setIcon(R.drawable.tools) // 設置對話框的標題 .setTitle("自定義View對話框") // 設置對話框顯示的View對象 .setView(loginForm) // 爲對話框設置一個「肯定」按鈕 .setPositiveButton("登陸", (dialog, which) -> { // 此處可執行登陸處理 }) // 爲對話框設置一個「取消」按鈕 .setNegativeButton("取消", (dialog, which) -> { // 取消登陸,不作任何事情 }) // 建立並顯示對話框 .create().show(); }