關於AlertDialog的常見用法

一、創建一個一般的彈出對話框AlertDialog:

     創建對話框 一個對話框一般是一個出現在當前Activity之上的一個小窗口。 處於下面的Activity失去焦點, 對話框接受所有的用戶交互。對話框一般用於提示信息和與當前應用程序直接相關功能。


二、創建AlertDialog通常使用的方法使用到的方法:

setIcon();setTitle();setMessage();setView();setAdapter();setPositiveButton();setNegativeButton();setNeutralButton();setMultiChoiceItems();setSingleChoiceItems();create();show()...

wKiom1YWS6njOFE5AAFZtibrPbU587.jpg

三、創建AlertDialog時,多數包含的共同方法:

        // 創建面板 , 創建Buidker構建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 繪製面板 添加需要內容並進行顯示
        builder.setTitle("普通提示").setMessage("確定退出嗎?").create().show();

wKiom1YWIffBow0JAAA_FfCYKto214.jpg


四、普通對話框中通常使用的控件:

    1)普通對話框添加按鈕(Dialog的按鈕顯示在安卓4.0+和5.0+中不同,5.0以後不在存在邊框,默認的按鈕是橫排,每個按鈕都有固定位置。如果不注意順序的話,可能造成文字沒有間距),創建步驟:

        1.創建AlertDialog.Builder對象。
            例如:AlertDialog.Builder builder = new  AlertDialog.Builder(this);


        2.通過builder設置普通對話框。

            例:builder=builder.setTitle().setMessage().setPositiveButton().setNegativeButton().setNe         utralButton();

        3.將設置好的builder通過使用create()方法轉換成爲AlerDialog對象
            例:AlerDialog alertdialog = builder.create();

        4.調用show()方法顯示。
            例:alertdialog.show();

wKiom1YWTczwKRLCAABYxJrDSHA240.jpg

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
/**
 * 根據要求設置佈局res/layout/xx.xml文件
 * 
 * 爲xx.xml文件中的控件添加點擊事件,空間的點擊事件引發的動作是普通彈出對話框。
 * 彈出對話框通常最多設置三個按鈕(彈出對話框中按鈕順序爲1,3,2),分別使用方法setPositiveButton(name,onclick).setNegativeButton(name,onclick).setNeutralButton(name,onclick).create.show();
 * 其中參數name :彈出對話框中的按鈕名稱;onclick :彈出對話框中對應按鈕的點擊事件。
 * 
 * 創建對話框的步驟
 * 1.創建Builder構建器  AlertDialog.Builder builder
 * 2.給Builder構建器去setXXX內容
 * 3.如果setXXX內容設置完畢,將Builder構建器通過create()方法轉成AlertDialog;
 * 4.讓轉換後的builder,調用AlertDialog的show()方法將對話框進行顯示。
 * 
 * @author Administrator
 *
 */
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void showClick(View view) {
        // 創建面板 , 創建Buidker構建器
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        // 繪製面板 添加需要內容
        builder = builder.setTitle("普通提示").setMessage("確定退出嗎?").setIcon(R.drawable.ic_launcher);
        builder.setPositiveButton("確定",
                /**
                 * 添加第一個按鈕
                 */
                //setPositiveButton  第一參數:1.按鈕上面的文字;
                //第二個參數:按鈕上面的單擊事件。
                new OnClickListener() {
                    /**
                     * DialogInterface dialog:按鈕所依賴的對話框
                     * int which:索引值
                     */
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("builder", "---->"+which);
                        dialog.dismiss();//設置對話框消失
                        // 關閉activity
                        MainActivity.this.finish();
                    }
                }).setNegativeButton("取消", new OnClickListener() {
                    /**
                     * 添加第二個按鈕
                     */
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("builder", "setNegativeButton" + which);
                        dialog.dismiss();
                    }
                }).setNeutralButton("忽略", new OnClickListener() {
                    /**
                     * 添加第三個按鈕
                     */
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("builder", "setNeutralButton"+which);
                        
                    }
                }).create().show();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

    2)彈出對話框顯示單選框和複選框,創建步驟:

        1.創建AlertDialog.Builder對象。
            例如:AlertDialog.Builder builder = new  AlertDialog.Builder(this);

        2.通過builder設置普通對話框。

            例:builder = builder.setTitle().setMessage().setMultiChoiceItems().

            setSingleChoiceItems();
            在設置複選框的時候結合了按鈕一起使用。

        3.將設置好的builder通過使用create()方法轉換成爲AlerDialog對象
            例:AlerDialog alertdialog = builder.create();

        4.調用show()方法顯示。
            例:alertdialog.show();

wKiom1YWUXKwrhjNAABJQUFvnh0281.jpgwKiom1YWUbORrO3XAABZnQgCL20771.jpg

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
    private TextView tv_show;
    String str[] = {"桌球","高爾夫","保齡球","籃球","旅遊","瑜伽"};
    String goods[] = {"籃球鞋","上衣","短褲","羽絨服","T恤"};
    //存放多選項的集合
    List<String> lists = new ArrayList<String>();
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_show = (TextView) findViewById(R.id.tv_show);//初始化顯示文本框
        
    }
    //添加按鈕點擊響應事件
    public void click(View view){
        switch (view.getId()) {
        //複選按鈕單擊事件
        case R.id.btn1:
            AlertDialog.Builder builder2= new AlertDialog.Builder(this);
            builder2.setTitle("多項選擇").setMultiChoiceItems(goods, new boolean[]{false,false,false,false,false}, new OnMultiChoiceClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    if (isChecked) {
                        lists.add(goods[which]);
                    }else{
                        lists.remove(goods[which]);
                    }
                }
            }).setPositiveButton("提交", new OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    tv_show.setText(lists.toString());
                    dialog.dismiss();
                }
            }).setNegativeButton("取消", new OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    tv_show.setText("沒有選中商品");
                    dialog.dismiss();
                    
                }
            }).create().show();
            break;
        //單選按鈕單擊事件
        case R.id.btn2:
            AlertDialog.Builder builder= new AlertDialog.Builder(this);
            builder.setTitle("請選擇:").setSingleChoiceItems(str, 0, new OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Log.i("builder", "---->"+which);
                    String choice = str[which];
                    tv_show.setText(choice);
                    dialog.dismiss();
                }
            }).setIcon(R.drawable.ic_launcher).create().show();
            break;
        default:
            break;
        }
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}


    3)爲普通對話框中添加View控件(以EditText爲例),創建步驟:

        1.創建AlertDialog.Builder對象。
            例如:AlertDialog.Builder builder = new  AlertDialog.Builder(this);

       2.通過builder設置普通對話框。
            例:builder = builder.setTitle().setMessage().setView();
            視圖同樣與按鈕結合使用。

       3.將設置好的builder通過使用create()方法轉換成爲AlerDialog對象
            例:AlerDialog alertdialog = builder.create();

       4.調用show()方法顯示。
            例:alertdialog.show();

wKiom1YWVDLQvuAZAAAtREXgJXI834.jpg

    下面的帶嗎是一個簡單的小應用,根據名字測試靠什麼吃飯,代碼如下:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
    private TextView tvresult;
    private EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvresult = (TextView) findViewById(R.id.tvresult);
        
    }
    public void click(View view){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        
        LayoutInflater inflater = getLayoutInflater();//創建佈局填充器    在activity中使用;
        
        View view1 = inflater.inflate(R.layout.item, null);
        et = (EditText) view1.findViewById(R.id.edit);
        builder.setTitle("進行測試").setView(view1).setPositiveButton("提交", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //獲取edittext的值
                String msg = et.getText().toString().trim();
                int r = msg.hashCode();
                Log.i("aaa", r+"");
                
                tvresult.setVisibility(View.VISIBLE);
                
                if (r%2 == 0) {
                    tvresult.setText(msg+"靠大腦吃飯");
                }else if(r%3 == 0){
                    tvresult.setText(msg+"靠臉皮吃飯");
                }else if(r%5 == 0){
                    tvresult.setText(msg+"靠手吃飯");
                }else if(r%7 == 0){
                    tvresult.setText(msg+"靠逗比吃飯");
                }else if(r%11 == 0){
                    tvresult.setText(msg+"靠老婆吃飯");
                }else {
                    tvresult.setText(msg+"靠丐幫吃飯");
                }
                dialog.dismiss();
                
            }
        }).setNegativeButton("取消", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                
            }
        }).create().show();
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}

五、總結:

        普通對話款在Android開發中應用較爲廣泛,在普通對話框裏面通常包含按鈕,圖標,主題,內容,選擇列表,視圖控件等。上述對普通對話框的基本介紹及用途介紹希望對大家有用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章