[Android] AlertDialog-嵌入客製化表單
文章AlertDialog-元件建立與顯示說明基本AlertDialog元件是由title、message所組成,實際應用情況是將特定訊息發送給使用者,並按下確認鈕使AlertDialog消失,上述應用都屬於單向互動,使用者只負責接收系統傳遞的訊息,但如果要作到雙向互動(如下圖),基本的AlertDialog是無法達成的
本文章將藉由LayoutInflater類別將Layout XML檔案轉換為View object,再透過AlertDialog類別的setView方法將其外觀設定為該custom view
範例情境:
AlertDialog顯示使用者名稱表單,完成輸入送出表單內容
程式碼說明:
一、建立輸入表單XML檔(login_view.xml),包含EditText和Button
二、以from(Context)取得目前Context LayoutInflater instance
三、利用inflate(int resource, ViewGroup root)將XML描述的Layout轉換為View Object,resource為XML檔案來源,在本例中就是R.layout.login_view;而root為選擇性參數,你可以利用它指定被轉換View Object的root view
四、產生AlertDialog並利用setView(View view),將轉換為view的login_view指定為其layout
五、執行simulator,就會成功看到AlertDialog嵌入使用者名稱輸入的表單
完整程式碼:
本文章將藉由LayoutInflater類別將Layout XML檔案轉換為View object,再透過AlertDialog類別的setView方法將其外觀設定為該custom view
範例情境:
AlertDialog顯示使用者名稱表單,完成輸入送出表單內容
程式碼說明:
一、建立輸入表單XML檔(login_view.xml),包含EditText和Button
二、以from(Context)取得目前Context LayoutInflater instance
LayoutInflater inflater = LayoutInflater.from(Alert.this);
三、利用inflate(int resource, ViewGroup root)將XML描述的Layout轉換為View Object,resource為XML檔案來源,在本例中就是R.layout.login_view;而root為選擇性參數,你可以利用它指定被轉換View Object的root view
View login_view = inflater.inflate(R.layout.login_view,null);
四、產生AlertDialog並利用setView(View view),將轉換為view的login_view指定為其layout
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("新增使用者");
builder.setMessage("請輸入使用者名稱:");
builder.setView(login_view);
AlertDialog dialog = builder.create();
dialog.show();
五、執行simulator,就會成功看到AlertDialog嵌入使用者名稱輸入的表單
完整程式碼:
package com.Alert;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
public class Alert extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//-----------取得Login Layout reference----------
LayoutInflater inflater = LayoutInflater.from(Alert.this);
View login_view = inflater.inflate(R.layout.login_view,null);
//-----------產生登入視窗--------
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("新增使用者");
builder.setMessage("請輸入使用者名稱:");
builder.setView(textEntryView);
final AlertDialog dialog = builder.create();
dialog.show();
}
}


留言
張貼留言