而透過LayoutInflater來帶入,不過要注意的dialog調用的方法為setView,而不是setContentView
要加入監聽事件則必須透過view來findViewById,而不是透過context的findViewById來找尋
Code:
AlertDialog.Builder builder = new AlertDialog.Builder(EngineerActivity.this); final AlertDialog dialog = builder.create(); LayoutInflater inflater = LayoutInflater.from(EngineerActivity.this); View view = inflater.inflate(R.layout.test, null); //上面兩行也可以縮減為 //View view = View.inflate(EngineerActivity.this, R.layout.test, null); Button buttonAdd = (Button) view.findViewById(R.id.button1); buttonAdd.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "新增成功", 1).show(); dialog.cancel(); } }); Button buttonCancel = (Button) view.findViewById(R.id.button2); buttonCancel.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "取消", 1).show(); dialog.cancel(); } }); dialog.setView(view); dialog.show();
XML:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="請輸入文字:" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/editText1" android:text="新增" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button1" android:layout_alignBottom="@+id/button1" android:layout_toRightOf="@+id/button1" android:text="取消" /> </RelativeLayout>
執行結果:
同Android 自訂AlertDialog