Android 對話框 AlertDialog

openkk 13年前發布 | 51K 次閱讀 Android Android開發 移動開發

本講介紹一下Android基本組件:對話框AlertDialog。

API:

java.lang.Object
   ? android.app.AlertDialog.Builder

使用AlertDialog.Builder創建對話框需要了解以下幾個方法:

  • setTitle :為對話框設置標題
  • setIcon :為對話框設置圖標
  • setMessage:為對話框設置內容
  • setView : 給對話框設置自定義樣式
  • setItems :設置對話框要顯示的一個list,一般用于顯示幾個命令時。
  • setMultiChoiceItems :用來設置對話框顯示一系列的復選框。
  • setNeutralButton    :
  • setPositiveButton   :給對話框添加"Yes"按鈕
  • setNegativeButton :對話框添加"No"按鈕
  • create : 創建對話框
  • show :顯示對話框

下面我們來看一下最簡單對話框。

這個對話框只是簡單的顯示內容,使用默認圖標,沒有按鈕,不多說,貼代碼:

new AlertDialog.Builder(MyActivity.this).setTitle("提示標題").setMessage("這是提示內容").show(); 

(MyActivity 是類名,請換成自己的!!)

下面我們為這個對話框加個按鈕,效果:

代碼:

 new AlertDialog.Builder(MyActivity.this)
         .setTitle("這是標題")
     .setMessage("這是提示內容") 
     .setPositiveButton("確定", 
     new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialoginterface, int i){ 
            //按鈕事件 
                Toast.makeText(Lesson_01_Pic.this, "確定",Toast.LENGTH_LONG).show();
         } 
     }).show(); 

添加按鈕時,需要同時為該按鈕指定監聽器。

下面,我們修改一個圖標,添加兩個按鈕,同時顯示多個選項,先看下效果:

代碼:

package com.yfz;
import android.app.Activity;
import android.app.AlertDialog;
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.Toast;

public class MyActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button button = (Button)findViewById(R.id.b01);
        button.setText("對話框");
        button.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                //選項數組
                String[] choices={"非死book","推ter"};
                //Check判斷數組,與選項對應
                boolean[] chsBool = {true,false};
                 //包含多個選項及復選框的對話框
                AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)
                         .setIcon(android.R.drawable.btn_star_big_on)
                         .setTitle("調查")
                         .setMultiChoiceItems(choices, chsBool, multiClick)
                         .setPositiveButton("Yes", onclick)
                         .setNegativeButton("No",  onclick).create();
                dialog.show();
            }

        });
    }

    /**
     * 對話框復選框事件監聽器
     */
    OnMultiChoiceClickListener multiClick = new OnMultiChoiceClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            Toast.makeText(Lesson_02_Dia.this, "第"+(which+1)+"項,選中結果:"+isChecked,Toast.LENGTH_SHORT).show();
        }

    };

    /**
     * 對話框按鈕點擊事件監聽器
     */
    OnClickListener onclick = new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which) {
                case Dialog.BUTTON_NEGATIVE:
                    Toast.makeText(Lesson_02_Dia.this, "No..",
                            Toast.LENGTH_LONG).show();
                    break;
                case Dialog.BUTTON_NEUTRAL:
                    Toast.makeText(Lesson_02_Dia.this, "I don't know.",
                            Toast.LENGTH_LONG).show();
                    break;
                case Dialog.BUTTON_POSITIVE:
                    Toast.makeText(Lesson_02_Dia.this, "Yes!!",
                            Toast.LENGTH_LONG).show();
                    break;
            }
        }
    };
}

說明已經寫在注釋中了。

下面再介紹一種比較常用的式樣,如圖:

代碼:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button button = (Button)findViewById(R.id.b01);
        button.setText("對話框");
        button.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                //選項數組
                String[] choices={"新浪微博","校內","街旁"};
                 //包含多個選項的對話框
                AlertDialog dialog = new AlertDialog.Builder(Lesson_02_Dia.this)
                         .setIcon(android.R.drawable.btn_star)
                         .setTitle("分享")
                         .setItems(choices, onselect).create();
                dialog.show();
            }
        });
    }


    /**
     * 選項的事件監聽器
     */
    OnClickListener onselect = new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            switch (which) {
            case 0:
                Toast.makeText(Lesson_02_Dia.this, "您選擇了新浪微博.",Toast.LENGTH_SHORT).show();
                break;
            case 1:
                Toast.makeText(Lesson_02_Dia.this, "您選擇了校內",Toast.LENGTH_SHORT).show();
                break;
            case 2:
                Toast.makeText(Lesson_02_Dia.this, "您選擇了街旁",Toast.LENGTH_SHORT).show();
                break;
        }
        }

    };

如果在彈出框中做一個登陸界面。

繼續補充...先上圖...

頁面login.xml: 示例寫的比較簡單,布局大家可以自己完善、修改。

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:id="@+id/widget36"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/widget37"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用戶名:"
>
</TextView>
<EditText
android:id="@+id/widget38"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18sp"
>
</EditText>
<TextView
android:id="@+id/widget39"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密碼:"
>
</TextView>
<EditText
android:id="@+id/widget40"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="18sp"
>
</EditText>
</TableLayout>

代碼 : (也比較簡單)
LayoutInflater factory = LayoutInflater.from(MyActivity.this);
//獲得自定義對話框
View view = factory.inflate(R.layout.login, null);

AlertDialog dialog02 = new AlertDialog.Builder(MyActivity.this)
 .setIcon(android.R.drawable.btn_star)
 .setTitle("登錄")
 .setView(view)
 .setPositiveButton("Yes", onclick)
 .setNegativeButton("No",  onclick).create();
dialog02.show();

有問題歡迎大家交流。

文章出處:http://blog.csdn.net/feng88724/article/details/6171450

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!