android 对话框(一)Dialog
来源:互联网 发布:淘宝企业店铺年费 编辑:程序博客网 时间:2024/05/17 18:40
Dialog
类是对话框的基类,但您应该避免直接实例化 Dialog
,而是使用下列子类之一: 1.AlertDialog 此对话框可显示标题、最多三个按钮、可选择项列表或自定义布局
2.
DatePickerDialog
或 TimePickerDialog
此对话框带有允许用户选择日期或时间的预定义 UI。这些类定义您的对话框的样式和结构,但您应该将 DialogFragment
用作对话框的容器。DialogFragment
类提供您创建对话框和管理其外观所需的所有控件,而不是调用 Dialog
对象上的方法。使用 DialogFragment
管理对话框可确保它能正确处理生命周期事件,如用户按“返回”按钮或旋转屏幕时。 此外,DialogFragment
类还允许您将对话框的 UI 作为嵌入式组件在较大 UI 中重复使用,就像传统 Fragment
一样(例如,当您想让对话框 UI 在大屏幕和小屏幕上具有不同外观时)。
提醒对话框
AlertDialog.Builder
类提供的 API 允许您创建具有这几种内容(包括自定义布局)的 AlertDialog
。AlertDialog.Builder builder=new AlertDialog.Builder(FSeachDetailActivity.this);//实例化 AlertDialog.Builder
builder.setMessage("您确定要拨打电话?");//设置提示信息,也可以设置标题setTitle
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {//设置确定按钮及点元事件
public void onClick(DialogInterface dialog, int id) {
//用intent启动拨打电话
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + tel));
startActivity(intent);
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {//设置取消按钮及点击事件
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog dialog=builder.create();//获取 AlertDialog用create方法
dialog.show();
效果图如下:
DialogFragment 作为
容器的对话框 下面的类中是利用DialogFragment作为一个对话框的容器,重写了onCreateDialog()方法,里面和内容和AlertDialog一样
//为了兼容版本请确保您导入的是 android.support.v4.app.DialogFragment 类,而不是 android.app.DialogFragment。
public class FireMissilesDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
builder.setMessage("您确定要拨打电话?");//设置提示信息,也可以设置标题setTitle
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {//设置确定按钮及点元事件
public void onClick(DialogInterface dialog, int id) {
//用intent启动拨打电话
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "10000"));
startActivity(intent);
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {//设置取消按钮及点击事件
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
return builder.create();//获取 AlertDialog用create方法
}
}
在Activity中用下面的方法调用就可以显示对话框
FireMissilesDialogFragment fireMissilesDialogFragment=new FireMissilesDialogFragment();//Fragment实例
fireMissilesDialogFragment.show(getSupportFragmentManager(),"dialog");//调用show()方法显示对话框;
自定义布局的AlertDialog:
利用AlertDialog.builder类的setView()方法可以设置自定义布局的对话框。
首先我们鼻祖自定义如下布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFBB33"
android:contentDescription="@string/app_name"
android:scaleType="center"
android:src="@mipmap/header_logo" />
<EditText
android:id="@+id/phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="16dp"
android:hint="电话号码"
/>
</LinearLayout>
然后改AlertDialog代码:
AlertDialog.Builder builder=new AlertDialog.Builder(this);//实例化 AlertDialog.Builder
View view=getLayoutInflater().inflate(R.layout.alertdialog_layout,null);
builder.setView(view);
EditText phoneNoTV=(EditText)view.findViewById(R.id.phone);
final String phoneNo= phoneNoTV.getText()==null?"1000":phoneNoTV.getText().toString();
// builder.setMessage("您确定要拨打电话?");//设置提示信息,也可以设置标题setTitle
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {//设置确定按钮及点元事件
public void onClick(DialogInterface dialog, int id) {
//用intent启动拨打电话
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNo));
startActivity(intent);
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {//设置取消按钮及点击事件
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog dialog=builder.create();//获取 AlertDialog用create方法
dialog.show();
来张自定义的效果图:
下面看一下自定义的dialogFragment
//为了兼容版本请确保您导入的是 android.support.v4.app.DialogFragment 类,而不是 android.app.DialogFragment。
public class CustomFireMissilesDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.alertdialog_layout, null);
// builder.setMessage("您确定要拨打电话?");//设置提示信息,也可以设置标题setTitle
builder.setView(view);
EditText phoneNoTV=(EditText)view.findViewById(R.id.phone);
final String phoneNo= phoneNoTV.getText()==null?"1000":phoneNoTV.getText().toString();
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {//设置确定按钮及点元事件
public void onClick(DialogInterface dialog, int id) {
//用intent启动拨打电话
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNo));
startActivity(intent);
dialog.dismiss();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {//设置取消按钮及点击事件
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
return builder.create();//获取 AlertDialog用create方法
}
}
布局是和自定义的AlertDialog共用的
项目下载地址:
https://github.com/wuhrGH/dialogBGTransparent
qq:763905070 共同学习
qq:763905070 共同学习
1 0
- android 对话框(一)Dialog
- Android之Dialog对话框(一)
- Android Dialog对话框大合集(一)
- Android中自定义对话框(Dialog) <一>
- Android 继承DialogFragment弹出dialog对话框一
- Android 继承DialogFragment弹出dialog对话框一
- Android之Dialog 对话框(一)
- Android打造万能的对话框Dialog(一)
- Android Dialog 对话框例子
- Android 对话框(Dialog)
- Android Dialog( 自定义对话框)
- Android 对话框(Dialog)大全
- Android 对话框(Dialog)大全
- Android 对话框(Dialog)大全
- Android 对话框(Dialog)
- Android 弹出对话框Dialog
- Android 对话框(Dialog)大全
- Android自定义Dialog对话框
- 复选框checkbox 判断是否选中、批量选中
- 【CSS3】阴影 box-shadow(二)
- 关于编程素养
- struts2标签
- facebook审核流程
- android 对话框(一)Dialog
- DBUnit使用心得
- eclipse 重新关联源码方式
- C语言 解析lrc歌词文件
- 数据库 员工管理系统 设计报告
- LeetCode:Maximum Subarray
- Unity 高版本项目 移植到 低版本
- Java ——基础之继承与接口的区别
- git之撤销修改