7.3. Dialog (对话框)
Dialog继承结构:
public class Dialog extends Object implements DialogInterface KeyEvent.Callback View.OnCreateContextMenuListener Window.Callback |
直接已知子类:
Known Direct Subclasses AlertDialog, CharacterPickerDialog, Presentation
|
间接已知子类:
Known Indirect Subclasses DatePickerDialog, ProgressDialog, TimePickerDialog
|
7.3.1 AlertDialog(告警对话框):
继承结构:
|
直接已知子类
Known Direct Subclasses DatePickerDialog, ProgressDialog, TimePickerDialog
|
它的嵌套类AlertDialog.Builder:
|
AlertDialog.Builder构造器:
AlertDialog.Builder(Context context) |
使用AlertDialog.Builder可以产生AlertDialog对象:
public AlertDialog create () |
范例一:简单对话框
配置文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout> |
Activity:
package com.makyan.demo; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.os.Bundle; public class AlertDialogActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_alert_dialog); // 调用布局管理器 Dialog dialog = new AlertDialog.Builder(this) .setTitle("对话框") // 创建标题 .setMessage("显示提示信息") // 表示对话框中的内容 .setIcon(R.drawable.pic_m) // 设置LOGO .create(); // 创建了一个对话框 dialog.show() ; // 显示对话框 } }
|
演示效果:
范例二:增加按钮对话框
配置:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/mytext" android:text="杨雄工作室" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/mybut" android:text="删除" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> |
Activity:
package com.makyan.demo; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class AlertDialogActivity extends Activity { private Button mybut = null ; // 定义按钮 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_alert_dialog); // 调用布局管理器 mybut = (Button) super.findViewById(R.id.mybut) ; // 取得按钮 mybut.setOnClickListener(new OnClickListenerImpl()) ; // 设置事件类 } private class OnClickListenerImpl implements OnClickListener { public void onClick(View view) { Dialog dialog = new AlertDialog.Builder(AlertDialogActivity.this) .setTitle("确定删除?") // 创建标题 .setMessage("您确定要删除该条信息吗?") // 表示对话框中的内容 .setIcon(R.drawable.pic_m) // 设置LOGO .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {
} }).setNeutralButton("查看详情", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {
} }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {
} }).create(); // 创建了一个对话框 dialog.show() ; // 显示对话框 } } }
|
演示效果:
范例三:退出按钮
配置文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageButton android:id="@+id/but" android:src="@drawable/exit" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> |
Activity:
package com.makyan.demo; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; public class AlertDialogActivity extends Activity { private ImageButton but = null ; // 定义按钮 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_alert_dialog); // 调用布局管理器 this.but = (ImageButton) super.findViewById(R.id.but) ; // 取得按钮 this.but.setOnClickListener(new OnClickListenerImpl()) ; // 设置事件类 } private class OnClickListenerImpl implements OnClickListener { @Override public void onClick(View view) { AlertDialogActivity.this.exitDialog() ; } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // 返回键 this.exitDialog() ; } return false ; } private void exitDialog(){ Dialog dialog = new AlertDialog.Builder(AlertDialogActivity.this) .setTitle("程序退出?") // 创建标题 .setMessage("您确定要退出本程序吗?") // 表示对话框中的内容 .setIcon(R.drawable.pic_m) // 设置LOGO .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { AlertDialogActivity.this.finish() ; // 操作结束 } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {
} }).create(); // 创建了一个对话框 & |