在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();
