自定義AlertDialog對話框,包括解決對話框中edittext不能輸入的問題

1、自定義代碼實現:

private void addAndEditBookmark(final String typeStr, String title) {
// 1. 佈局文件轉換爲View對象
LayoutInflater inflater = LayoutInflater.from(context);
RelativeLayout layout = (RelativeLayout) inflater.inflate(
R.layout.bookmark_add, null);


// 2. 新建對話框對象
dialog = new AlertDialog.Builder(context).create();
dialog.setCancelable(false);
dialog.show();
Window window = dialog.getWindow();
window.setContentView(layout);
window.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
// 就是這個屬性導致不能獲取焦點,默認的是FLAG_NOT_FOCUSABLE,故名思義不能獲取輸入焦點
window.getAttributes().flags = window.getAttributes().FLAG_DIM_BEHIND;
window.setAttributes(window.getAttributes());
window.setLayout(screenWidth / 3, LayoutParams.WRAP_CONTENT);


// 3.標題內容
TextView dialog_title = (TextView) layout
.findViewById(R.id.title_bar_name);
dialog_title.setText(title);


// 4. 消息內容
dialog_msg = (EditText) layout.findViewById(R.id.input_add_string);
if ("add".equals(typeStr)) {
dialog_msg.setHint("請輸入添加的標籤名稱");
} else if ("edit".equals(typeStr)) {
String str = (String) list.get(selectedIndex).get("markName");
dialog_msg.setHint(str);
}


// 5. 確定按鈕
Button btnOK = (Button) layout.findViewById(R.id.dialog_ok);
btnOK.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
String str = dialog_msg.getText().toString();
if (null == str || "".equals(str) || "null".equals(str)) {
Toast.makeText(context, "標籤名稱不能爲空", Toast.LENGTH_SHORT)
.show();
return;
} else {
addOrEditMark(typeStr, str);
}
dialog.dismiss();
}
});


// 6. 取消按鈕
Button btnCancel = (Button) layout.findViewById(R.id.dialog_cancel);
btnCancel.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}


2、對應的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:gravity="center"
    android:padding="8dp" >


    <RelativeLayout
        android:id="@+id/layout_title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/title_background"
        android:gravity="center_vertical" >


        <TextView
            android:id="@+id/title_bar_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:ellipsize="end"
            android:gravity="center"
            android:singleLine="true"
            android:text="添加書籤"
            android:textColor="@color/custom"
            android:textSize="18sp"
            tools:ignore="HardcodedText" />
    </RelativeLayout>


    <EditText
        android:id="@+id/input_add_string"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/layout_title"
        android:layout_marginTop="10dp"
        android:background="@drawable/edittext_bg"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:singleLine="true"
        android:textSize="18sp"
        tools:ignore="TextFields" />


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/input_add_string"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:orientation="horizontal" >


        <Button
            android:id="@+id/dialog_ok"
            android:layout_width="wrap_content"
            android:layout_height="40dip"
            android:layout_weight="1"
            android:background="@drawable/btn_background"
            android:text="確定"
            android:textColor="@color/white"
            tools:ignore="HardcodedText" />


        <Button
            android:id="@+id/dialog_cancel"
            android:layout_width="wrap_content"
            android:layout_height="40dip"
            android:layout_marginLeft="5dp"
            android:layout_weight="1"
            android:background="@drawable/btn_background"
            android:text="取消"
            android:textColor="@color/white"
            tools:ignore="HardcodedText" />
    </LinearLayout>


</RelativeLayout>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章