顯示具有 AlertDialog 標籤的文章。 顯示所有文章
顯示具有 AlertDialog 標籤的文章。 顯示所有文章

2012-07-23

Android對話方塊(AlertDialog)應用(二) - 自定義對話方塊

繼上篇基本介紹之後,此篇來為您介紹更為實用的自定義型式對話方塊

自定義對話方塊可以算是個簡單型的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


不然如果是簡單的選取,其實用這個就綽綽有餘了。

Android對話方塊(AlertDialog)應用(一) - 基本型及自定義按鈕

今天介紹的是也蠻常用的對話方塊AlertDialog

此功能就如同window上的MessageBox一樣

只是比它還強大一點,因為AlertDialog除了基本的訊息和設定按鈕外


它也能變成自定義對話方塊,自由改變AlertDialog內容


自定義對話方塊下篇再來說明,此篇先介紹基本型的就好

廢話不要太多,直接貼出程式碼和說明:

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="訊息方塊" />

</LinearLayout>

DemoAlertDialogActivity.java
package jim.demo.alertdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class DemoAlertDialogActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //跳出對話方塊的按鈕
        Button btn = (Button)findViewById(R.id.button1);
        
        btn.setOnClickListener(new Button.OnClickListener(){
	  @Override
	  public void onClick(View v) {
				   
          /*基本型對話方塊
	    setIcon:設置Icon圖片,我是使用內建圖片
	    setTitle:設置標題
	    setmessage:設置內容*/
	  Builder  dialog = new AlertDialog.Builder(DemoAlertDialogActivity.this)
	  .setIcon(android.R.drawable.btn_star_big_on)
	  .setTitle("標題")  
	  .setMessage("我只是個內容");
	  dialog.show();  
	  }
        	
        });
    }
}


畫面



自定義按鈕
package jim.demo.alertdialog;


import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class DemoAlertDialogActivity extends Activity {
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //跳出對話方塊的按鈕
        Button btn = (Button)findViewById(R.id.button1);
        
        btn.setOnClickListener(new Button.OnClickListener(){
			@Override
			public void onClick(View v) {
				   
               /*基本型對話方塊
				 setIcon:設置Icon圖片,我是使用內建圖片
				 setTitle:設置標題
				 setmessage:設置內容*/
				Builder  dialog = new AlertDialog.Builder(DemoAlertDialogActivity.this)
				.setIcon(android.R.drawable.btn_star_big_on)
				.setTitle("標題")  
				.setMessage("我只是個內容");
				
				//建立三個按鈕的監聽式
				 DialogInterface.OnClickListener Click = new DialogInterface.OnClickListener()
				 {
					@Override
					public void onClick(DialogInterface dialog, int which) {
						//which可以用來分辨是按下哪一個按鈕
						 switch (which) {
						 case Dialog.BUTTON_POSITIVE:  
							 //快顯訊息
							 Toast.makeText(DemoAlertDialogActivity.this, "左邊按鈕",  
			                         Toast.LENGTH_SHORT).show();
							 break; 
						 case Dialog.BUTTON_NEUTRAL:  
							//快顯訊息
							 Toast.makeText(DemoAlertDialogActivity.this, "中間按鈕",  
			                         Toast.LENGTH_SHORT).show();
							 break; 
						 case Dialog.BUTTON_NEGATIVE:  
							//快顯訊息
							 Toast.makeText(DemoAlertDialogActivity.this, "右邊按鈕",  
			                         Toast.LENGTH_SHORT).show();
							 break; 
						 }
					}
					 
				 };
				 
				 dialog.setPositiveButton("左邊按鈕",Click );
				 dialog.setNeutralButton("中間按鈕",Click );
				 dialog.setNegativeButton("右邊按鈕",Click );
				dialog.show();  
			}
        	
        });
    }
}


畫面


後記:

AlertDialog在Android手機應用程式中還蠻常用到的

因為如果只是一個簡單的選取而不需要另外開Activity的話

基本上都會用AlertDialog直接代替,也就是說AlertDialog除了


可顯示訊息外,還可以當做一個簡單的Activity來用


但這就要用到自定義的方式才處理,下面一篇就來為您介紹


自定義的方式顯示對話方塊它的實例運用。