而透過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