android dialog 结构,Android 原生Dialog实现
1. 简介
Dialog 是一个可以展示信息以及和用户交互的小窗体.
1.1 Dialog 的组成部分
Title 标题部分 : 这部分是可选的,只有当内容区域被使用了才可以使用这里.(并不是强制的)
Content 内容区域 : 显示信息的部分,可以使用自定义布局.
Action Buttons 交互按钮 : 最多三个按钮.(Positive,Negative, Neutral)
1.2 管理Dialog
使用DialogFragment来管理Dialog可以正确处理生命周期事件. 我们可以创建各种各样的Dialog,当然可以自定义UI.
2 分类
对于系统的原生的Dialog主要有下面几种 :
普通提示Dialog.
列表Dialog.
单选列表Dialog.
多选列表Dialog.
自定义ContentView Dialog.
自定义TitleView Dialog.
先看效果图
效果图
2.1 普通提示Dialog
实现代码
/**
* 普通提示Dialog.
*/
public static class NormalTextDialogFragment extends DialogFragment {
/**
* 创建Dialog时调用
*/
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Log.d(TAG, "onCreateDialog: ");
// 创建构造器
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// 设置参数
builder.setMessage("普通提示Dialog信息")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d(TAG, "onClick: 确定 " + Thread.currentThread().getId());
Toast.makeText(getActivity(), "点击了确定", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d(TAG, "onClick: 取消 " + Thread.currentThread().getId());
Toast.makeText(getActivity(), "点击了取消", Toast.LENGTH_SHORT).show();
}
});
// 创建对话框并返回.
return builder.create();
}
}
调用方式
// 创建类实例,调用 show() 方法就可以显示了.
new NormalTextDialogFragment().show(getSupportFragmentManager(), "normal_text_dialog");
2.2 列表Dialog
/**
* 列表Dialog
*/
public static class ListDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
return builder
.setTitle("颜色选择")
.setItems(R.array.color_arrays, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 获取列表
String[] colors = getResources().getStringArray(R.array.color_arrays);
// 显示
Toast.makeText(getActivity(), "选择了 " + colors[which], Toast.LENGTH_SHORT).show();
}
})
.create();
}
}
2.3 单选Dialog
/**
* 单选框Dialog
*/
public static class SingleChoiceDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setSingleChoiceItems(R.array.color_arrays, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 获取列表
String[] colors = getResources().getStringArray(R.array.color_arrays);
// 显示
Toast.makeText(getActivity(), "选择了 " + colors[which], Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("OK",null)
.setNegativeButton("Cancel", null)
.create();
}
}
2.4 多选Dialog
/**
* 多选项Dialog
*/
public static class MultiChoiceDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setMultiChoiceItems(R.array.color_arrays, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
// 获取列表
String[] colors = getResources().getStringArray(R.array.color_arrays);
// 显示
String txt = "点击了: " + colors[which] + " == " + isChecked;
Toast.makeText(getActivity(), txt, Toast.LENGTH_SHORT).show();
}
})
.setPositiveButton("OK", null)
.setNegativeButton("Cancel", null)
.create();
}
}
2.5 自定义ContentView
/**
* 自定义Content
*/
public static class CustomContentDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
return builder
.setView(R.layout.dialog_custom_content)
.setPositiveButton("OK" , null)
.setNegativeButton("Cancel", null)
.create();
}
}
2.6 自定义Title
/**
* 自定义标题Dialog
*/
public static class CustomTitleDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater li = getActivity().getLayoutInflater();
return builder
.setCustomTitle(li.inflate(R.layout.dialog_custom_title, null))
.setPositiveButton("OK" , null)
.setNegativeButton("Cancel", null)
.create();
}
}
android dialog 结构,Android 原生Dialog实现相关推荐
- android simples 结构,android – 如何在simple_list_item_2中构造和显示信息?
我从我的(测试)数据库中获取客户信息列表,我想显示它.客户由Customer类表示,包括姓名,信息和注释成员.它的toString方法只返回名称.我创建了仅使用simple_list_item_1布局 ...
- androidsdcard挂载目录_(Android系统目录结构)/mnt/sdcard 和 sdcard 的区别
mnt/是Unix/Linux系统下外部设备的专用目录,Linux默认挂载外部设备都会挂载到这个目录;如将SD卡挂载后,会生成目录:/mnt/sdcard/. shell@aeon6735m_65c_ ...
- android 自定义dialog样式,Android 自定义dialog类
首先定制style样式 styles.xml 加入自定义样式 @null true true true @color/transparent @color/transparent true 0.6 在 ...
- Android中修改弹出dialog背景无色透明,弹出时有遮罩
先在styles.xml中写入下面样式 1 <style name="dialog" parent="@android:style/Theme.Dialog&quo ...
- android dialog 横向全屏,Dialog全屏,去掉状态栏的方式
dialog即使设置全屏了,但还是有状态栏占用高度这: 直接将下面这行代码放到你的dialog中即可 @Override protected void onStart() { super.onStar ...
- android service中显示一个dialog
转自:http://blog.csdn.net/huxueyan521/article/details/8954844 dialog是依附于activity存在的.但是app中经常需要使用以下的情况, ...
- android 自定义对话框 demo,自定义dialog对话框获取EditText数据demo
效果: java代码 package com.example.dialogdemo; import android.app.Activity; import android.app.AlertDial ...
- android 8种对话框(Dialog)使用方法汇总
本文为作者原创,转载请注明出处:http://www.cnblogs.com/gzdaijie/p/5222191.html 目录 1.写在前面 2.代码示例 2.1 普通Dialog(图1与图2) ...
- Android几秒后自动关闭dialog
代码改变世界 Android几秒后自动关闭dialog AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());bu ...
最新文章
- 限时删!一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)
- 微服务、分布式、云架构构建电子商务平台
- python自动化办公 百度网盘-Python自动化办公实战教程2020最新带源码
- mfc指示灯报警显示_消防水炮需要外置声光报警吗
- java检查两个字符串是否包含,java判断一个字符串是否包含另外一个字符串,java另外一个,要检查一个字符串是否包含...
- python csdn博客_GitHub - 1783955902/CSDNBlogBackup: Python实现CSDN博客的完整备份
- cross validation交叉验证
- always on_Always On可用性组中的自动播种
- idea本地运行JavaWeb项目
- csdn下载频道资源整理
- 2019 CCF 推荐 会议 列表
- 如何为html代码加密
- sw转cad映射文件_SolidWorks工程图转CAD图纸DWG文件教程-很吊
- Amazon 新手要知道 100 个问题
- 进化算法的产生与发展
- 【算法】布赖恩·克尼根算法——天才算法求二进制中1的个数
- java好玩的项目github_GitHub 上有些什么好玩的项目?
- VM虚拟机故障安装不了虚拟网卡解决办法
- centos7 gam_server进程导致CPU使用率100%,系统负载很高
- Arduino人体红外感应+继电器