1、Dialog详解Dialog是android开发过程中最常用到的组件之一,它包括以下几种类型:1. 警告对话框:Alertialog2. 进度对话框:ProgressDialog3. 日期选择对话框:DatePickerDialog4. 时间选择对话框:TimePickerDialog5. 自定义对话框:从Dialog继承Dialog的创建方式有两种:一是直接new一个Dialog对象,然后调用Dialog对象的show和dismiss方法来控制对话框的显示和隐藏。二是在Activity的onCreateDialog(int id)方法中创建Dialog对象并返回,然后调用Activty的sh
2、owDialog(int id)和dismissDialog(int id)来显示和隐藏对话框。区别在于通过第二种方式创建的对话框会继承Activity的属性,比如获得Activity的menu事件等。使用AlertDialog可以创建普通对话框、带列表的对话框以及带单选按钮和多选按钮的对话框。普通对话框效果如下:代码: /创建builder AlertDialog.Builder builder = new AlertDialog.Builder(DialogSampleActivity.this); builder.setTitle(普通对话框) /标题 .setIcon(R.drawab
3、le.ic_launcher) /icon .setCancelable(false) /不响应back按钮 .setMessage(这是一个普通对话框) /对话框显示内容 /设置按钮 .setPositiveButton(确定, new DialogInterface.OnClickListener() Override public void onClick(DialogInterface dialog, int which) Toast.makeText(DialogSampleActivity.this, 点击了确定按钮, Toast.LENGTH_SHORT).show(); ) .
4、setNeutralButton(中立, new DialogInterface.OnClickListener() Override public void onClick(DialogInterface dialog, int which) Toast.makeText(DialogSampleActivity.this, 点击了中立按钮, Toast.LENGTH_SHORT).show(); ) .setNegativeButton(取消, new DialogInterface.OnClickListener() Override public void onClick(Dialog
5、Interface dialog, int which) Toast.makeText(DialogSampleActivity.this, 点击了取消按钮, Toast.LENGTH_SHORT).show(); ); /创建Dialog对象 AlertDialog dlg = builder.create(); return dlg;带列表的对话框效果图:代码:final CharSequence items = Item1, Item2, Item3 ; / 创建builder AlertDialog.Builder builder = new AlertDialog.Builder(
6、DialogSampleActivity.this); builder.setTitle(列表对话框) / 标题 .setIcon(R.drawable.ic_launcher) / icon .setCancelable(false) / 不响应back按钮 .setItems(items, new DialogInterface.OnClickListener() Override public void onClick(DialogInterface dialog, int which) Toast.makeText(DialogSampleActivity.this, 选择了 + it
7、emswhich, Toast.LENGTH_SHORT) .show(); ); / 创建Dialog对象 AlertDialog dlg = builder.create(); return dlg;带单选按钮的列表对话框只需将setItems替换为:.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() Override public void onClick(DialogInterface dialog, int which) Toast.makeText(DialogSampleActivity.t
8、his, 选择了 + itemswhich, Toast.LENGTH_SHORT) .show(); );这里多了一个参数-1,代表默认选中第几项,-1表示默认不选中带复选框的列表对话框只需将setItems替换为:.setMultiChoiceItems(items, checked, new DialogInterface.OnMultiChoiceClickListener() Override public void onClick(DialogInterface dialog, int which, boolean isChecked) Toast.makeText(DialogS
9、ampleActivity.this, 选择了 + itemswhich, Toast.LENGTH_SHORT) .show(); );参数checked伟boolean数组,表示默认哪些复选框是被选中的。另外,如果你想要获取list中哪些项是被选中的,你需要:/获得ListViewListView list = dlg.getListView();/判断第i项是否被选中,为真表示被选中,为假表示没有选中list.getCheckedItemPositions().get(i)日期选择对话框效果图:代码:Calendar calendar = Calendar.getInstance();
10、DatePickerDialog.OnDateSetListener dateListener = new DatePickerDialog.OnDateSetListener() Override public void onDateSet(DatePicker datePicker, int year, int month, int dayOfMonth) Toast.makeText(DialogSampleActivity.this, year + 年 + (month+1) + 月 + dayOfMonth + 日, Toast.LENGTH_SHORT) .show(); ; Da
11、tePickerDialog dlg = new DatePickerDialog( DialogSampleActivity.this, dateListener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH); return dlg;时间选择对话框效果图:代码:Calendar calendar = Calendar.getInstance(); TimePickerDialog.OnTimeSetListener timeListener = n
12、ew TimePickerDialog.OnTimeSetListener() Override public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) Toast.makeText(DialogSampleActivity.this, hourOfDay + : + minute, Toast.LENGTH_SHORT).show(); ; TimePickerDialog dlg = new TimePickerDialog( DialogSampleActivity.this, timeListener, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true); return dlg;自定义对话框效果图:步骤:1、创建对话框的布局文件 ListView android:id=+id/dlg
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1