【Android初級】如何實現一個具有選擇功能的對話方塊效果(附原始碼)

snowyeti發表於2021-01-31

我們去餐廳吃飯時,服務員都會拿選單給我們選擇點什麼菜。今天就分享一個具有選擇功能的簡易對話方塊,給使用者展示一個選擇列表。實現思路如下:

  1. 既然有選擇列表,那麼這個列表的內容肯定儲存在某個地方

  2. 使用者選擇某一項後,給使用者做出提示,剛才選擇的是什麼

該功能主要用的是 AlertDialog,原始碼如下:

1、主Activity(細看程式碼中詳細的註釋)

`
package com.example.memorydemo.aty;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.example.memorydemo.R;

public class AlertDialogDemo extends Activity {

@Override
protected void onCreate(Bundle onSavedInstance) {
    super.onCreate(onSavedInstance);
    setContentView(R.layout.alert_dialog_demo);

    Button button = findViewById(R.id.buttonAlertDialog);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new AlertDialog.Builder(AlertDialogDemo.this)
                    .setTitle("Please choose")

                    // 設定對話方塊的顯示內容,是個內容列表,注意:這裡需要傳陣列型別,比如 R.array 或者 String[]
                    .setItems(R.array.items_alert_dialog, new DialogInterface.OnClickListener() {

                        // 點選列表上的任一項
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            String[] items = getResources().getStringArray(R.array.items_alert_dialog);
                            new AlertDialog.Builder(AlertDialogDemo.this)

                                    // 再次彈框,向使用者提示 使用者剛才選擇的內容
                                    .setMessage("You chose: " + items[which])
                                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                        }
                                    }).show();
                        }
                    })

                    // 第一個對話方塊有個 取消 按鈕
                    .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    })
                    .show();
        }
    });
}

}`

2、佈局檔案 alert_dialog_demo.xml

`

<TextView
        android:paddingTop="20dp"
        android:text="這是一個AlertDialog樣例"
        android:layout_width="match_parent"
        android:gravity="center"
        android:layout_height="wrap_content" android:id="@+id/textView7"/>
<Button
        android:text="點選開始選擇"
        android:layout_marginTop="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" android:id="@+id/buttonAlertDialog"/>

`

3、列表內容定義在 res/values/strings.xml 中:

`

...

<array name="items_alert_dialog">
    <item>成都串串</item>
    <item>重慶火鍋</item>
    <item>港式餐廳</item>
</array>

`

4、效果圖如下:

分享這個極為簡單的功能,主要是為後面學習AlertDialog的中高階用法以及實現具備複雜選擇功能的需求打下堅實的基礎。

相關文章