Android之Builder对话框的一些常用方式
原文:
http://blog.csdn.net/kkfdsa132/article/details/6322835
Android为我们提供几种对话框,主要有:AlertDialog、ProgressDialog、DataPickerDialog、TimePickerDialog。
AlertDialog,是具有0-3个按钮,还可以可以放置选项、复选框单选框或自定义布局等,以达到与用户交互的效果。
AlertDialog中 最常用的莫过于Builder对话框。下面,列举出它常用的几种方式:1.简单的Builder;2.带控件的Builder;3.自定义布局的Builder;4.嵌套的Builder
1)简单的Builder
- new AlertDialog.Builder(AlertDialog_Builder.this) //Content上下文
- .setIcon(android.R.drawable.ic_dialog_alert) //图标,android.R开头表示Android提供的资源库
- .setTitle("简单的Builder:显示文本内容") //标题
- .setMessage(et_show.getText()) //要显示的内容
- .show(); //显示
2)带控件的Builder
- final CharSequence[] items ={"Black", "Red", "Blue", "Yellow"};
- final int[] color = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW};
- final StringBuffer selectedItem = new StringBuffer("0");
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("带Button的Builder:显示文本内容")
- //.setMessage(et_show.getText())
- .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- selectedItem.delete(0, selectedItem.length()-1);
- selectedItem.append(which);
- }
- })
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- int colorID = Integer.parseInt(selectedItem.toString());
- et_show.setBackgroundColor(color[colorID]);
- }
- })
- .setNegativeButton("清除", new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- et_show.setText("");
- }
- })
- .setNeutralButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.cancel();
- }
- })
- .show();
3)自定义布局的Builder
a.代码
- final LayoutInflater layout = LayoutInflater.from(AlertDialog_Builder.this); //用于获取,要使用final修饰
- final View customView = layout.inflate(R.layout.alter_text, null); //创建自定义的View,要使用final修饰
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("自定义的Builder:修改文本内容")
- .setView(customView) //添加自定义视图
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- EditText et_alteredText = (EditText)customView.findViewById(R.id.et_alteredText); //获取自定义View里面的EditText
- et_show.setText(et_alteredText.getText().toString());
- }
- })
- .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.cancel();
- }
- })
- .show();
b.布局文件alter_text.xml
- <?xml version="1.0" encoding="utf-8"?>
- <AbsoluteLayout
- android:id="@+id/widget1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <EditText
- android:id="@+id/et_alteredText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textSize="18sp"
- android:layout_x="0px"
- android:layout_y="22px"
- >
- </EditText>
- </AbsoluteLayout>
4)嵌套的Builder
- final LayoutInflater layout2 = LayoutInflater.from(AlertDialog_Builder.this); //用于获取XML工厂,要使用final修饰
- final View customView2 = layout2.inflate(R.layout.alter_text, null); //创建自定义的View,要使用final修饰
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("嵌套的Builder:显示文本内容")
- .setMessage(et_show.getText())
- .setPositiveButton(R.string.rename, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- new AlertDialog.Builder(AlertDialog_Builder.this)
- .setIcon(android.R.drawable.ic_dialog_info)
- .setTitle("嵌套的Builder:修改文本内容")
- .setView(customView2) //添加自定义视图
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//添加一个Button并注册其响应事件
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- EditText et_alteredText = (EditText)customView2.findViewById(R.id.et_alteredText); //获取自定义View里面的EditText
- et_show.setText(et_alteredText.getText().toString());
- }
- })
- .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- dialog.cancel();
- }
- })
- .show();
- }
- })
- .setNegativeButton("取消", new DialogInterface.OnClickListener() { //注意,这个是SetNegativeButton,上面那个是SetPositiveButton
- //不能重复名字,否则最后那个会覆盖前面那个,也就是说每个Buttion只显示一个。
- @Override
- public void onClick(DialogInterface dialog, int which) {
- // TODO Auto-generated method stub
- et_show.setText("");
- }
- })
- .show();
至于Builder的进一步使用,以后在补上。
- 顶
- 0
- 踩