iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Mobile Development

Android Studio 30天學習系列 第 14

Android Studio 30天學習-DAY14_AlertDialog

  • 分享至 

  • xImage
  •  

AlertDialog浮動視窗選擇列表

AlertDialog是一個浮動式的視窗,上面可以做很多事情,我目前只學了2個功能,第一個是條列式選單,另一個是多項勾選功能,實際樣式如下圖。

  • 條列式選單
  • 多項勾選

AlertDialog最常見的使用情境就是配合點擊事件並且跳出這個浮動視窗,所以XML的部分我只有新增按鈕來達到這個使用效果。

Java程式碼

這些功能我會比較喜歡寫在副程式的部分,這樣我覺得程式碼會比較清晰。

  • 這個部份我有使用了Toast的功能,應用情境是我點選了哪一個國家,而在選取完成後就會跳出我所選取的是哪個國家。圖例如下方的Now you selected is : 台灣
  1. 條列式選單副程式
    public void CountrySelectAlertDialog (){
        AlertDialog.Builder builder = new AlertDialog.Builder (MainActivity.this);
        builder.setTitle ("國家列表");
        builder.setItems (Countrys, new DialogInterface.OnClickListener () {
            @Override
            public void onClick (DialogInterface dialogInterface, int i) {
                Toast.makeText (MainActivity.this,"Now you selected Country is : "+Countrys[i],Toast.LENGTH_LONG).show ();
            }
        });
        builder.create ().show ();
    }
  • 程式碼分析:

    • AlertDialog.Builder builder = ... :是用來初始化這個Builder,並且顯示的畫面在哪個地方。
    • .setTitle :是用來設定標題欄位的顯示文字。
    • .setItems :用來設定以建立完成的物件,我這邊是放String陣列,這個建立完成之後是聆聽點擊事件,來判斷是否被有被點擊,有被點擊之後就執行onClick的事件。
    • AlertDialog建立完成後要使用.create()以及.show()沒有.show()不管怎麼點擊還是不會顯示你所建立的內容。,前面粗體字要注意。
  • 按鈕點擊事件

        select.setOnClickListener (new View.OnClickListener () {
            @Override
            public void onClick (View view) {
                CountrySelectAlertDialog ();
            }
        });
  1. 多項勾選內容副程式
    public void MultiSelectAlertDialog(){

        final boolean[] selected = new boolean[Foods.length];

        AlertDialog.Builder builder1 = new AlertDialog.Builder (this);
        builder1.setTitle ("食物");
        builder1.setMultiChoiceItems (Foods, selected, new DialogInterface.OnMultiChoiceClickListener () {
            @Override
            public void onClick (DialogInterface dialogInterface, int i, boolean b) {
                Log.e ("TAG", "onClick: "+Foods[i]+b);
            }
        }).setPositiveButton ("Positive", new DialogInterface.OnClickListener () {
            @Override
            public void onClick (DialogInterface dialogInterface, int i) {
                Log.e ("TAG", "已送出");
            }
        }).setNegativeButton ("Negative", new DialogInterface.OnClickListener () {
            @Override
            public void onClick (DialogInterface dialogInterface, int i) {
                Log.e ("TAG", "已取消選取");
            }
        }).setNeutralButton ("Neutral", new DialogInterface.OnClickListener () {
            @Override
            public void onClick (DialogInterface dialogInterface, int i) {
            }
        }).setIcon (R.drawable.foods);
        builder1.create ().show ();
    }
  • 程式碼分析:

    • 前面幾個功能與上一個相似。
    • .setMultiCloiceItems:這個建立時需要輸入的內容有(CharSequence[] items, boolean[] checkedItems, final OnMultiChoiceClickListener listener)這些東西,也就是要輸入物件、然後判斷有沒有勾選狀態的布林函數,最後就是聆聽點擊事件。
    • .setPositiveButton
    • .setNegativeButton
    • .setNeutralButton
      • 以上這三個所對應的位置如下圖,一樣都有聆聽點擊事件,最常見的設定像是確定送出以及取消退出這類的。
    • .setIcon:設定圖標在AlertDialog的標題旁邊作為襯托標題文字。
  • 三種Button的位置對應圖

  • 多項勾選點擊事件

        MultiSelect.setOnClickListener (new View.OnClickListener () {
            @Override
            public void onClick (View view) {
                MultiSelectAlertDialog ();
            }
        });
  • 備註
    • AlertDialog本身就有滑動功能。
    • .show()一定要放,不然怎麼點擊按鈕都無法跳出AlertDialog的內容。

以上是今天練習的AlertDialog浮動視窗點選功能。


上一篇
Android Studio 30天學習-DAY13_Fragment結合Recyclerview
下一篇
Android Studio 30天學習-DAY15_Logcat&Toast
系列文
Android Studio 30天學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言