今天要來討論AlertDialog如何自訂可以輸入或選取的資料項目的客製化Alert。因為只有單純的文字是無法滿足開發人員的想像。所以,才有可以自訂樣板的功能。
請在Android Studio 3.x版,新建一個專案。增加一個Empty Activity。在 res目錄中的layout目錄,加入一個Layout XML File檔案。
在自訂樣板的名稱,輸入「alertinput」,而Root Tag,用預設值即可,即原預設值:「LinearLayout」。如下圖所示:
出現自訂樣板後,再拉一個EditText輸入文字元件,來呈現出類似這樣的畫面,分別重新改id名稱。如下圖所示:
在原來的空白Layout,就不用改什麼,這個範例,主要是一執行,就會出現一個客製化的AlertDialog,再輸入資料後,回到原來的Activity,再用Toast來顯示。
接下來的就是寫程式的部份,如果要取得自訂的版面,就要用LayoutInflater物件,再用inflate()函式來取得自訂的版面。
再用setView來設定取得的自訂版面。完整的程式碼,如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog.Builder objdbr = new AlertDialog.Builder(this);
//取得自訂的版面。
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
final View v = inflater.inflate(R.layout.alertinput,null);
objdbr.setTitle("請輸入您的資料:");
//設定AlertDialog的View。
objdbr.setView(v);
objdbr.setPositiveButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//回傳輸入的值,再用Toast顯示。
EditText txt_item = (EditText)(v.findViewById(R.id.txtitem));
prc_showmessage(txt_item.getText().toString());
}
}).show();
}
//顯示訊息
public void prc_showmessage(String strmessage)
{
Toast objtoast = Toast.makeText(this,strmessage, Toast.LENGTH_SHORT);
objtoast.show();
}
}
在執行模擬器時,結果如下圖所示:
一開始執行,就會出現Alert,輸入資料後,按下「確定」按鈕,回傳資料,用Toast來顯示。如下圖所示: