Android 常用dialog提示對話框


在android應用程序中,經常需要用到dialog對話框讓用戶知道現在所在進行的操作(比如耗時的操作),或者提示某些信息和狀態等,算是比較常用的一個知識點;

1、簡單對話框

    protected void dialog1(AlertDialog.Builder builder) {
        builder.setTitle("標題");
        builder.setPositiveButton("確定", null);
        builder.setIcon(R.drawable.ic_launcher);
        builder.setMessage("簡單消息框");
        builder.show();
    }

2、帶自定義內容對話框

    protected void study2(AlertDialog.Builder builder) {
        builder.setTitle("標題");
        builder.setView(new EditText(this));
        builder.setPositiveButton("確定", null);
        builder.setIcon(android.R.drawable.ic_dialog_info);
        builder.setMessage("簡單消息框");
        builder.show();
    }

3、帶單選按鈕對話框

    protected void study3(AlertDialog.Builder builder) {
        builder.setTitle("請選擇")
                .setIcon(android.R.drawable.ic_dialog_info)
                .setSingleChoiceItems(
                        new String[] { "item1", "item2", "item3", "item4" }, 0,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                Log.e("選擇", "" + which);
                                dialog.dismiss();
                            }
                        }).setNegativeButton("取消", null).show();
    }

在選擇了某一項之后,onClick回調事件會把選擇的項的索引返回給用戶;

4、帶多選組合框對話框

    protected void study4(AlertDialog.Builder builder) {
        builder.setTitle("請選擇")
                .setIcon(android.R.drawable.ic_dialog_info)
                .setMultiChoiceItems(
                        new String[] { "item1", "item2", "item3", "item4" },
                        new boolean[] { true, true, false, true },
                        new OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which, boolean isChecked) {
                                ListView lv = ((AlertDialog) dialog).getListView();
                                Log.e("項" + which, "選擇" + lv.getCheckedItemPositions().get(which));
                            }
                        }).setNegativeButton("取消", null).show();
    }

在多選對話框中,選擇了某一項並不會導致對話框隱藏,同樣android也通過回調接口返回用戶所選擇的項;

5、進度條對話框

    public void study5() {
        ProgressDialog dialog = new ProgressDialog(MainActivity.this);
        dialog.setCancelable(true);
        dialog.setMessage("加載中...");
        // dialog.setTitle("進度條框窗口");
        // dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        // dialog.setMax(100);
        dialog.show();
    }

 

6、除了上述的添加用戶界面友好提示的方法,還可以通過WindowManager添加一個View到界面上向用戶反饋信息,此種方法也更靈活

    protected void study6() {
        ViewGroup vg = (ViewGroup) getLayoutInflater().inflate(R.layout.dia,null);
        pb = (ProgressBar) vg.findViewById(R.id.pb);
        vg.removeAllViews();
        WindowManager.LayoutParams lp = new WindowManager.LayoutParams(160,
                160, WindowManager.LayoutParams.TYPE_APPLICATION,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);
        WindowManager windowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
        windowManager.addView(pb, lp);
    }

重要的步驟即是從lp開始,設置LayoutParams參數,然后添加到窗口;

7.使用Window將view添加到window上

                AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                AlertDialog dialog = builder.show();
                Window window = dialog.getWindow();
                window.setContentView(R.layout.dialoglayout);

8.使用style來設置樣式

    <!-- 自定義Dialog -->
    <style name="MyDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

//

                Dialog dialog1 = new Dialog(getActivity(), R.style.MyDialog);
                dialog1.setContentView(R.layout.dialoglayout);
                dialog1.show();

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM