iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 7
0
自我挑戰組

在Android Studio 3.x版開發Android系統的開發記事系列 第 7

在Android Studio 3.x版開發Android系統的開發記事-如何自訂AlertDialog

今天要來討論AlertDialog如何自訂可以輸入或選取的資料項目的客製化Alert。因為只有單純的文字是無法滿足開發人員的想像。所以,才有可以自訂樣板的功能。
請在Android Studio 3.x版,新建一個專案。增加一個Empty Activity。在 res目錄中的layout目錄,加入一個Layout XML File檔案。
在自訂樣板的名稱,輸入「alertinput」,而Root Tag,用預設值即可,即原預設值:「LinearLayout」。如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20181013/20000953Ko7WrikRSa.jpg

出現自訂樣板後,再拉一個EditText輸入文字元件,來呈現出類似這樣的畫面,分別重新改id名稱。如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20181013/20000953yjctCf7bYe.jpg

https://ithelp.ithome.com.tw/upload/images/20181013/200009534m4TnmtXhU.jpg

在原來的空白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();
    }
}
在執行模擬器時,結果如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20181013/20000953Q1orAzKOkH.jpg

一開始執行,就會出現Alert,輸入資料後,按下「確定」按鈕,回傳資料,用Toast來顯示。如下圖所示:

https://ithelp.ithome.com.tw/upload/images/20181013/20000953x4UJTXVdKt.jpg


上一篇
在Android Studio 3.x版開發Android系統的開發記事-如何自訂ListView列表項目
下一篇
在Android Studio 3.x版開發Android系統的開發記事-如何傳送資料到另外一個Activity
系列文
在Android Studio 3.x版開發Android系統的開發記事30

尚未有邦友留言

立即登入留言