自定義對話方塊可以算是個簡單型的Activity,可以讓我們做一此簡單的選取
不用再另外加開一個Activity,再用Intent把資料傳來傳去的很麻煩
下面就用一個實例:點餐系統,實作自定義對話方塊
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/welcome" android:gravity="center_horizontal"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/btn" android:id="@+id/btn"></Button> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView1" android:text="@string/str2"></TextView> </LinearLayout>
strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="welcome">歡迎光臨蟹堡王</string> <string name="app_name">點餐系統</string> <string name="btn">進入點餐系統</string> <string name="str2">您點的餐點有:</string> </resources>
OrderingsystemActivity.java
package com.orderingsystem; import android.app.AlertDialog; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnMultiChoiceClickListener; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class OrderingsystemActivity extends Activity { //複選框項目 public String[] choices={"美味蟹堡","義式香腸堡","蔬菜水果堡","香蕉潛艇堡","香烤雞肉堡"}; //Check判斷,注意數量比較和複選框內數量相同 public boolean[] chsBool = {false,false,false,false,false}; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { //包含多個選項及複選框的對話框 AlertDialog dialog = new AlertDialog.Builder(OrderingsystemActivity.this) .setIcon(android.R.drawable.btn_star_big_on) .setTitle("您點的餐點有:") .setMultiChoiceItems(choices, chsBool, multiClick) .setPositiveButton("確認", onclick) .setNegativeButton("離開", onclick).create(); dialog.show(); } }); } // 對話複選框事件監聽器 OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){ @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { //記錄選取的項目 chsBool[which]=isChecked; } }; // 對話框按鈕點擊事件監聽器 OnClickListener onclick = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case Dialog.BUTTON_NEGATIVE: Toast.makeText(OrderingsystemActivity.this, "暫時不點了!", Toast.LENGTH_LONG).show(); break; case Dialog.BUTTON_POSITIVE: //點選確認時寫到"你點的餐點有:"後面 TextView Ans = (TextView)findViewById(R.id.textView1); String selectedStr = ""; for(int i=0; i<chsBool.length; i++) { if (chsBool[i]==true) { //加入"\n"自動換行 selectedStr = selectedStr + "\n" + choices[i]; } } Ans.setText("您點的餐點有:" + selectedStr); break; } } }; }
執行畫面
後記:
像這種選取的動作使用自定義對話方塊就能簡單的完成
不用再麻煩的使用Activity,畫面比較複雜時才需另開一個Activity
不然如果是簡單的選取,其實用這個就綽綽有餘了。
非常詳細!! 感謝LIN前輩的教學!!
回覆刪除請問 , 使用 Alertlog 視窗內的字
回覆刪除可以改變顏色嗎?