1. 程式人生 > >Android--萬能自定義彈窗

Android--萬能自定義彈窗

使用的是AlertDialog

自定義彈窗呢,就是一個介面放在了AlertDialog容器彈框上。

第一步:寫好你的介面 (在layout下建立system_admin_psw_alert_dialog.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height
="wrap_content" android:background="#fff" android:padding="10dp" >
<RelativeLayout android:layout_width="match_parent" android:layout_height="40dp" android:layout_marginBottom="10dp" > <ImageView android:id="@+id/system_admin_psw_alert_img"
android:layout_width="40dp" android:layout_height="40dp" android:background="@drawable/warn" />
<TextView android:layout_width="wrap_content" android:layout_height="40dp" android:text="@string/warning" android:textColor
="#f00" android:textSize="25sp" android:layout_marginLeft="6dp" android:layout_toRightOf="@+id/system_admin_psw_alert_img" />
<Button android:id="@+id/system_admin_psw_alert_close" android:layout_width="22dp" android:layout_height="22dp" android:background="@mipmap/close_icon" android:layout_alignParentRight="true" /> </RelativeLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#f00" android:textSize="18sp" android:padding="8dp" android:lineSpacingExtra="8dp" android:text="@string/set_debug_info" /> <EditText android:id="@+id/sap_alert_dialog_edt" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxLength="6" android:digits="1234567890" android:singleLine="true" android:layout_margin="16dp" android:hint="請輸入主管密碼" android:textColorHint="#ccc" android:textColor="#000" android:background="@mipmap/sys_login_psw" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="10dp" > <Button android:id="@+id/sap_alert_dialog_cancel" android:layout_width="wrap_content" android:layout_height="34dp" android:background="#f00" android:text="關閉" android:layout_marginLeft="20dp" /> <Button android:id="@+id/sap_alert_dialog_ok" android:layout_width="wrap_content" android:layout_height="34dp" android:background="#f00" android:text="開啟" android:layout_alignParentRight="true" android:layout_marginRight="20dp" /> </RelativeLayout> </LinearLayout>

2、在一個Activity介面上設定按鈕 然後觸發彈框出現
再觸發時間裡寫 showSetDeBugDialog()方法

 private void showSetDeBugDialog() {
        AlertDialog.Builder setDeBugDialog = new AlertDialog.Builder(this);
        //獲取介面
        View dialogView = LayoutInflater.from(this).inflate(R.layout.system_admin_psw_alert_dialog, null);
        //將介面填充到AlertDiaLog容器
        setDeBugDialog.setView(dialogView);
        //初始化控制元件
        final EditText adminPwd = (EditText) dialogView.findViewById(R.id.sap_alert_dialog_edt);
        Button okButton = (Button) dialogView.findViewById(R.id.sap_alert_dialog_ok);
    //取消點選外部消失彈窗
        setDeBugDialog.setCancelable(false);
        //建立AlertDiaLog
        setDeBugDialog.create();
        //AlertDiaLog顯示
        final AlertDialog customAlert = setDeBugDialog.show();
    //設定自定義介面的點選事件邏輯        dialogView.findViewById(R.id.system_admin_psw_alert_close).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                customAlert.dismiss();
            }
        });
        okButton.setOnClickListener(new android.view.View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String str = adminPwd.getText().toString();
                if (str.equals("888888")) {
                    ToastUtil.toast("開啟");
                    editor.putString("univ_set_debug", "1");
                    editor.apply();
                    setDebugbtn.setText(getString(R.string.debug_open));
                    customAlert.dismiss();
                }else{
                    ToastUtil.toast(getString(R.string.login_pwd_fail));
                }
            }
        });
        dialogView.findViewById(R.id.sap_alert_dialog_cancel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String str = adminPwd.getText().toString();
                if (str.equals("888888")) {
                    ToastUtil.toast("關閉");
                    editor.putString("univ_set_debug", "0");
                    editor.apply();
                    setDebugbtn.setText(getString(R.string.debug_close));
                    customAlert.dismiss();
                }else{
                    ToastUtil.toast(getString(R.string.login_pwd_fail));
                }
            }
        });


    }