Dialog的用法

特點:

不會自動消失,除非點擊返回值或者關閉按鈕

分類:

1.ProgressDialog 進度對話框
2.AlertDialog 提示對話框
3.TimePickerDialog/DatePickerDialog 時間/日期設置對話框

(1)TimePickerDialog的使用:

//獲取Dialog對象
            /*
             * 參數1: Context對象,
             * 2: onTimeSetListener,當設置完時間確認後會調用此接口中的方法
             * 3:設置對話框初始顯示時的小時數
             * 4:設置對話框初始顯示時的分鐘數
             * 5:是否以24小時制顯示
             */
            TimePickerDialog td = new TimePickerDialog(this, new OnTimeSetListener() {
                /*
                 * 參數1:用於設置時間的兩個滾輪
                 * 參數2,3:確認設置的小時數和分鐘數
                 * 
                 */
                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, hourOfDay+" : "+minute, Toast.LENGTH_SHORT).show();
                }
            }, 10, 19, true);

            //調用show方法展示
            td.show();

DatePickerDialog的使用:

//獲取對象
            /*
             * 1: Context。
             * 2. onDateSetListener ,一旦日期設置完成後會調用此接口中的方法
             * 3,4,5:對話框初始顯示時的年月日
             * 注意:月份小1個 
             */
            new DatePickerDialog(this, new OnDateSetListener() {
                //參數用於代表設置後的年月日
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear,
                        int dayOfMonth) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, year+" / "+(monthOfYear+1)+" / "+dayOfMonth, Toast.LENGTH_SHORT).show();
                }
            }, 2016, 11, 19)
            .show(); //通過show方法顯示

AlertDialog的基本顯示:

//初始化對象
            new AlertDialog.Builder(this)
            .setIcon(R.drawable.ic_launcher)  //設置圖標
            .setTitle("標題文本") 
            .setMessage("提示信息文本")
            //添加按鈕,參數用於設置按鈕上的文字以及按鈕的點擊事件
            //注意:如果點擊按鈕後只是負責關閉對話框,不幹其他事情,點擊事件可填null
            .setNeutralButton("忽略", null)
            .setNegativeButton("取消", null)
            .setPositiveButton("確定", new OnClickListener() {
                //參數1:代表當前顯示的對話框對象
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "確定按鈕被點擊了!!!", Toast.LENGTH_SHORT).show();
                }
            })
            .setCancelable(false)  //設置只能通過點擊對話框中的按鈕關閉對話框
            .show();  //顯示

AlertDialog中更多的種類:

1. 列表對話框 :

//實現列表對話框的關鍵:setItems方法
            new AlertDialog.Builder(this)
            .setIcon(R.drawable.ic_launcher)
            .setTitle("普通列表對話框")
            /*
             * 通過setItems方法實現,
             * 參數1: 數組,用於設置列表中要顯示的數據源
             * 參數2:設置列表中每一個條目的點擊事件
             */
            .setItems(strs, new OnClickListener() {
                /**
                 * 當對話框中顯示一個列表時,參數二which有意義
                 * which: 用於代表被點的item在列表中所處的position位置
                 */
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "列表中選中的數據爲:"+strs[which], Toast.LENGTH_SHORT).show();
                }
            })
            .show();

2. 單選列表對話框 :

singleStr = "abc";
            new AlertDialog.Builder(this)
            .setTitle("單選列表")
            /*
             * 設置單選列表
             * 參數1:列表中顯示的數據源
             * 參數2: 設置默認選中項在列表中所處的位置
             * 3:列表的item的點擊事件
             * 
             */
            .setSingleChoiceItems(strs, 0, new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    singleStr = strs[which];
//                  Toast.makeText(MainActivity.this, "單選列表的選擇結果爲:"+strs[which], Toast.LENGTH_SHORT).show();
                    //關閉對話框
//                  dialog.cancel();
                    //或者
//                  dialog.dismiss();
                }
            } )
            .setPositiveButton("ok", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "單選列表的選擇結果爲::::"+singleStr+"  "+which, Toast.LENGTH_SHORT).show();
                }
            })
            .show();

3. 多選列表對話框 :

list.clear();
            list.add(strs[1]);
            list.add(strs[3]);
            new AlertDialog.Builder(this)
            .setTitle("多選列表")
            /**
             * 1.   要顯示的數據源,數據源可設置數組對象或者values中的數組資源對應的id
             * 2.  boolean類型數組,用於給數據源中的每一個數據設置選中狀態
             */
            .setMultiChoiceItems(strs, new boolean[]{false,true,false,true}, new OnMultiChoiceClickListener() {
                //當列表中的item被點擊時運行此方法
                //which代表被點擊的item在列表中對應的位置,參數3:該item在被點擊之後的選中狀態
                @Override
                public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                    // TODO Auto-generated method stub
                    Log.i("oye", which+"  "+isChecked);
                    if (isChecked) {
                        list.add(strs[which]);
                    } else {
                        list.remove(strs[which]);
                    }
                }
            } )
            .setPositiveButton("ok", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "多選結果爲:"+list.toString(), Toast.LENGTH_SHORT).show();

                }
            })
            .show();

4. 自定義顯示內容的對話框 :

View view  = LayoutInflater.from(this).inflate(R.layout.custom, null);
            final EditText et = (EditText) view.findViewById(R.id.et);

            //自定義顯示內容
            new AlertDialog.Builder(this)
            .setTitle("自定義顯示內容")
            /*
             * 通過setView方法中的view參數設置對話框的自定義顯示內容*/
            .setView(view)
            .setPositiveButton("ok", new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, et.getText().toString(), Toast.LENGTH_SHORT).show();
                }
            })
            .show();

備註:對話框不能夠自定義顯示位置,位置始終固定顯示在屏幕的居中位置

發佈了34 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章