1. 程式人生 > >【Android】運用Builder來創建Alertdialog

【Android】運用Builder來創建Alertdialog

pos nco mes inflater width one dial 不用 ica


簡述

直接在activity調用AlertDialog.Builder來創建一個dialog,不用單獨去創建一個類,這個設計我感覺非常友好。考慮到實際安卓app的dialog需要完成的任務也不會太多,所以這個方法應該可以實現90%的需求了,比安 卓官方文檔裏面用正兒八經創建對話框的方法簡便,話不多說,看看這個模式吧。

首先我們需要一個對話框的layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="256dp"
    android:layout_height="141dp"
    android:orientation="vertical">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="92dp"
        android:gravity="center"
        android:orientation="vertical">


        <TextView
            android:id="@+id/dialog_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:lineSpacingExtra="3dp"
            android:lineSpacingMultiplier="1.2"
            android:textColor="#333333"
            android:textSize="15sp"
            android:visibility="gone" />


        <TextView
            android:id="@+id/dialog_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="3dp"
            android:lineSpacingExtra="3dp"
            android:lineSpacingMultiplier="1.2"
            android:textColor="#333333"
            android:textSize="15sp" />
    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:gravity="center"
        android:orientation="horizontal">


    </LinearLayout>
</LinearLayout>

用getLayoutInflater().inflate()方法找到在資源文件裏找到layout

LinearLayout layout=(LinearLayout) getLayoutInflater().inflate(R.layout.dialog,null);

順便設置一下文字,R.string.dlg_titleR.string.dlg_message是string資源裏自己添加的項

TextView dialogTile=layout.findViewById(R.id.dialog_title);
TextView dialogMessage=layout.findViewById(R.id.dialog_message);
dialogTile.setText(R.string.dlg_title);
dialogMessage.setText(R.string.dlg_message);

是在這裏添加->技術分享圖片

建造這個對話框

 new AlertDialog.Builder(MainActivity.this).setView(layout)
                        .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                /*
                                點擊確定按鈕要做的事
                                */
                            }
                        })
                        .setNegativeButton("取消",null)//因為取消鍵只是關閉,所以不設監聽
                        .setCancelable(true)//可以點對話框外部關閉對話框
                        .create()
                        .show();

以上三段代碼都是在activity中直接寫的,不用新建一個類,寫出來也很短,感覺棒棒的。

【Android】運用Builder來創建Alertdialog