关于Android 对话框 AlertDialog
来源:互联网 发布:linux 解压 压缩 编辑:程序博客网 时间:2024/05/06 04:59
AlertDialog extends Dialog implements DialogInterface
三个构造方法:都是protected
使用AlertDialog.Builder创建对话框需要了解以下几个方法:
setTitle :为对话框设置标题
setIcon :为对话框设置图标
setMessage:为对话框设置内容
setView : 给对话框设置自定义样式
setItems :设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems :用来设置对话框显示一系列的复选框
setNeutralButton :普通按钮
setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
-----------------------------------------------------------------------------------
上代码
Dialog alertDialog = new AlertDialog.Builder(this)
.setTitle("对话框的标题")
.setMessage("对话框的内容")
.setIcon(R.drawable.ic_launcher)
.create();
alertDialog.show();
②有按钮的
.setTitle("注意")
.setMessage("文件名已经存在是否覆盖?")
.setPositiveButton(
"Ok",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which) {
if (file.renameTo(newFile)) {
showFileDir(fPath);
displayToast("重命名成功");
} else {
displayToast("重命名失败");
}
}
})
.setNegativeButton(
"取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,int which) {
}
}).show();
}
} else {
if (file.renameTo(newFile)) {
showFileDir(fPath);
displayToast("重命名成功");
} else {
displayToast("重命名失败");
}
}
}
};
// 选择文件时,显示出增删改的目录
String[] menu = { "打开文件", "重命名", "删除文件" };
new AlertDialog.Builder(Main.this).setTitle("请选择")
.setItems(menu, listener)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).show();
}
private void openFile(File file) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
String type = getMIMEType(file);
intent.setDataAndType(Uri.fromFile(file), type);
startActivity(intent);
}
// 获取文件MIMEType
private String getMIMEType(File file) {
// TODO Auto-generated method stub
String type = null;
String name = file.getName();
// 文件后缀名如:.jpg .mp3
String end = name.substring(name.lastIndexOf(".") + 1, name.length())
.toLowerCase();
if (end.equals("mp3") || end.equals("m4a") || end.equals("wav")) {
type = "audio";
} else if (end.equals("mp4") || end.equals("3gp")) {
type = "video";
} else if (end.equals("jpg") || end.equals("gif") || end.equals("png")
|| end.equals("jpeg") || end.equals("bmp")) {
type = "image";
} else {
type = "*";
}
type += "/";
return type;
}
四、类似RadioButton的AlertDialog
用setSingleChoiceItems(CharSequence[] items, int checkedItem, final OnClickListener listener)
方法来实现类似RadioButton的AlertDialog
第一个参数是要显示的数据的数组,第二个参数是初始值(初始被选中的item),
第三个参数是点击某个item的触发事件
在这个例子里面我们设了一个selectedFruitIndex用来记住选中的item的index
final String[] arrayFruit = new String[] { "苹果", "橘子", "草莓", "香蕉" };
Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("你喜欢吃哪种水果?").
setIcon(R.drawable.ic_launcher)
.setSingleChoiceItems(arrayFruit, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
selectedFruitIndex = which;
}
}).
setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(Dialog_AlertDialogDemoActivity.this, arrayFruit[selectedFruitIndex], Toast.LENGTH_SHORT).show();
}
}).
setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
create();
alertDialog.show();
}
}
五、类似CheckBox的AlertDialog
用setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, final OnMultiChoiceClickListener listener)方法来实现类似CheckBox的AlertDialog
第一个参数是要显示的数据的数组,
第二个参数是选中状态的数组,第三个参数是点击某个item的触发事件
final String[] arrayFruit = new String[] { "苹果", "橘子", "草莓", "香蕉" };
final boolean[] arrayFruitSelected = new boolean[] {true, true, false, false};
Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("你喜欢吃哪种水果?").
setIcon(R.drawable.ic_launcher)
.setMultiChoiceItems(arrayFruit, arrayFruitSelected, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
arrayFruitSelected[which] = isChecked;
}
}).
setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < arrayFruitSelected.length; i++) {
if (arrayFruitSelected[i] == true)
{
stringBuilder.append(arrayFruit[i] + "、");
}
}
Toast.makeText(Dialog_AlertDialogDemoActivity.this, stringBuilder.toString(), Toast.LENGTH_SHORT).show();
}
}).
setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
create();
alertDialog.show();
}
}
六、自定义View的AlertDialog
有时候我们不能满足系统自带的AlertDialog风格,就比如说我们要实现一个Login画面,有用户名和密码,这时我们就要用到自定义View的AlertDialog
先创建Login画面的布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/user" />
<EditText
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center" >
<TextView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/passward" />
<EditText
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
然后在Activity里面把Login画面的布局文件添加到AlertDialog上
[java] package com.tianjf;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
public class Dialog_AlertDialogDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 取得自定义View
LayoutInflater layoutInflater = LayoutInflater.from(this);
View myLoginView = layoutInflater.inflate(R.layout.login, null);
Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("用户登录").
setIcon(R.drawable.ic_launcher).
setView(myLoginView).
setPositiveButton("登录", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
create();
alertDialog.show();
}
}
运行结果如下:
- 关于Android 对话框 AlertDialog
- 关于AlertDialog"全局对话框"
- Android中的对话框AlertDialog
- 【Android】对话框 AlertDialog
- Android对话框之AlertDialog
- Android 对话框 (AlertDialog & ProgressDialog)
- android AlertDialog对话框
- 【Android】对话框 AlertDialog
- 【Android】对话框 AlertDialog
- Android 重写对话框AlertDialog
- 【Android】对话框 AlertDialog
- 【Android】对话框 AlertDialog
- 【Android】对话框 AlertDialog
- android AlertDialog对话框
- android基础--AlertDialog对话框
- 【Android】对话框 AlertDialog
- Android--AlertDialog对话框
- Android创建AlertDialog对话框
- hsql工具的使用【傻瓜式使用】
- ViKey加密狗对视频文件进行加密
- 预置Chrome浏览器默认主页和书签
- 几个输入框之间实现自动跳转
- 设计模式六大原则(2):里氏替换原则
- 关于Android 对话框 AlertDialog
- 大世界
- Google Guava 工具集__2__Cache 缓存使用
- listview的item的点击事件与checkbox点击时间冲突
- WIN7+VS2010下配置编译SQLite_3.8.6
- 南宁奥美定取出要多少钱
- 【转】Linux Socket编程(不限Linux)
- C# listview中显示imagelist中的图片
- 信息化是什么