Dialog对话框样式的四种实现方式
来源:互联网 发布:小榕哥sql注入工具 编辑:程序博客网 时间:2024/06/05 15:29
1.最好的实现方式,重写dialog样式。
特点:1)需要自定义整个布局内容。
2)可以设置点击对话框外禁止取消窗口。
3)可以弹出输入法。
4)点返回键可以取消。
<?xml version="1.0" encoding="utf-8"?>
2.在用AlertDialog来实现。代码同dialog一样,不过输入法不弹出了。解决这个问题参看如下链接,可以弹出输入法,可以设置点击对话框外禁止取消窗口。
http://blog.csdn.NET/fastthinking/article/details/38492389
3.在用activity来实现。样式设置成dialog样式。不过用Acitivity来实现简单的对话框有些不必要。
4.用PopupWindow实现,不过在有输入框的对话框时,PopupWindow不能很好的实现点击返回键退出。原因如下:
1).发现PopupWindow一个bug。
只有获取焦点才能弹出输入法,如果PopupWindow的ContentView想弹出输入法的话,必须设置PopupWindow获取焦点,即PopupWindow.setFocusable(true);
但是会导致设置禁止点击弹出窗口外失败,PopupWindow.setOutsideTouchable(false);即点击弹出窗口外会取消窗口。因为
setOutsideTouchable的设置仅仅对处于未获取焦点的且处于可触摸模式的PopupWindow起作用。setOutsideTouchable默认值是false.也就是说如果PopupWindow获取了焦点,此方法不起作用。点击PopupWindow窗口外的动作响应是取消窗口。
原文注释:
void android.widget.PopupWindow.setOutsideTouchable(boolean touchable)
Controls whether the pop-up will be informed of touch events outside of its window.This only makes sense for pop-ups that are touchable but not focusable, which means touches outside of the window will be delivered to the window behind. The default is false.
If the popup is showing, calling this method will take effect only the next time the popup is shown or through a manual call to one of theupdate()
methods.
- Parameters:
- touchable true if the popup should receive outside touch events, false otherwise
- See Also:
- isOutsideTouchable()
- isShowing()
- update()
2).如果想设置点击PopupWindow外事件不取消PopupWindow的话,必须如下设置,
PopupWindow.setTouchable(true);//默认
PopupWindow.setFocusable(false);//取消获取焦点,这会导致无法弹出输入法
PopupWindow.setOutsideTouchable(false);
3).看PopupWindow源码知,点击PopupWindow外面区域,自动dismiss,需要调用
PopupWindow.setBackgroundDrawable(new ColorDrawable());//这个很关键
PopupWindow.setOutsideTouchable(true);
4).需要的效果之一,点击点击PopupWindow外面区域,不dismiss对话框,并且点击弹出窗口的输入组件会弹出输入法。(设置PopupWindow.setFocusable(true))
5).看PopupWindow源码知,PopupWindow的PopupViewContainer类是私有的,用来控制显示和处理点击事件,包括点击窗口外取消窗口,没法重写它来处理点击窗口外取消窗口事件。
- android之Dialog对话框样式的四种实现方式
- Dialog对话框样式的四种实现方式
- Dialog对话框的四种显示样式
- 常用dialog(四) : 通用对话框 和 样式
- 设置对话框dialog的样式
- Android多种方式实现自定义Dialog对话框
- Android多种方式实现自定义Dialog对话框
- Android多种方式实现自定义Dialog对话框
- jquery-dialog对话框的实现
- Android-对话框dialog的实现
- 自定义Dialog的几种实现方式
- 自定义Dialog的两种实现方式
- Android自定义样式对话框Dialog
- Android Dialog样式的Activity的实现
- android列表对话框(dialog)的实现
- 模式对话框PopupWindow实现Dialog的功能
- android的自定义dialog对话框实现
- 如何实现自定义的dialog对话框
- 欢迎使用CSDN-markdown编辑器
- 【深入Java虚拟机】之七:Javac编译与JIT编译
- 【交互设计】弹窗、新页面、当前页跳转
- hdu2206
- C++常见问题总结
- Dialog对话框样式的四种实现方式
- Ribbon 和 Eureka 的集成
- 关于bintray上传的方法
- 5-25 念数字 (15分)
- 处理xml返回报文
- cut
- hdu2203
- Nginx slab的实现 --- 第四篇“基于块的内存释放”
- uva 11729 水题