Dialogs是一个弹出来的小的窗口,让用户做决定或者输入额外的信息。一个对话框不会暂满整个屏幕,通常被用来一些需要用户在他们执行前动作的事件。
Dailog是基本的父类,但是我们应该避免直接实例化它,替代的,使用它的子类。
第一个是AlertDialog,一个可以展示标题,最多三个按钮,一些选项,或者一个自定义的布局文件。
官方网站推荐使用DialogFragment,方便管理,这个要学习Fragment之后在好好研究,给的例子的继承DialogFragment,其实和疯狂安卓差不多,就是然后builder都差不多,调用show方法,显示。另外又有关于兼容的问题,真的麻烦啊。
创建一个Alert Dialog.
组成
1.
Title,如果内容区不是很复杂的信息,list或者自定义布局,一般不需要,如果仅仅是提醒的,就不用了
2.
Content Area 展示信息、list或者自定义布局文件
3.
Action Buttons 最多三个按钮
创建一个AlertDialog,
// 1. Instantiate an AlertDialog.Builder with its constructor
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 2. Chain together various setter methods to set the dialog characteristics
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();
创建了之后需要添加button,使用set…方法,需要一个String resource设置标题,和一个DialogInterface.OnClickListener事件,处理用户点击。
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Add the buttons
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User clicked OK button
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
// Set other dialog properties
...
// Create the AlertDialog
AlertDialog dialog = builder.create();
按钮有三种:Positive 确定,Negative cancle Netural, 比如下次提醒,我们比较常见的,一些更新提示,就是这么做的吧。
这三种按钮,如果有,只能有一个。
添加一个List
三种可用的list: 1.传统的单选 2.persistent的单选(radio buttons)不太理解 3.persistent多选的(checkboxes)
使用setItems
.setItems(R.array.colors_array, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// The 'which' argument contains the index position
// of the selected item
}
});
因为lsit展示在内容区,不能同时显示message和list,所以需要调用setTitle设置标题。作为替换,也可以使用setAdapter,动态加载,如果我们要这么用,最好用loader,这个后续继续学习啊。
If you choose to back your list with a ListAdapter, always use a Loader so that the content loads asynchronously. This is described further in Building Layouts with an Adapter and the Loaders guide.
默认我们点击任意一个item,就取消这个Altert Dialog了,
使用setMultiChoiceItems() or setSingleChoiceItems() 记住用户的选择吧。
给了一个例子,如果以后用户在点击,要给用户展示他的选择
创建自定义的布局:
需要调用setView方法,默认view会占满这个Dialog,不过我们可以使用setTitle和button,添加上去
默认我们点击Dialog的item,这个Dialog会自动消失,除非是多选或者单选的按钮,后续处理。
等学完Fragment之后在回来学习,第二次看一遍。