android popuwindow点击外部窗口不消失的实例
发布时间 - 2026-01-11 00:40:16 点击率:次网上大多数都是说如何监听点击外部消失,但我遇到的问题是点击外面不让其消失,如下是我的解决方案,关键是:popupMenu.setBackgroundDrawable(null);popupMenu.setFocusable(false);
popupMenu = new PopupWindow(view, keylinearlayout.getWidth(), LayoutParams.WRAP_CONTENT);
ColorDrawable cd = new ColorDrawable(R.color.white);
//popupMenu.setBackgroundDrawable(cd);
popupMenu.setBackgroundDrawable(null);
popupMenu.setAnimationStyle(R.style.AnimBottom);
popupMenu.update();
popupMenu.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
popupMenu.setTouchable(true); // 设置popupwindow可点击
popupMenu.setOutsideTouchable(false); // 设置popupwindow外部可点击
popupMenu.setFocusable(false); // 获取焦点
popupMenu.setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// 如果点击了popupwindow的外部,popupwindow也会消失
// 这里如果返回true的话,touch事件将被拦截
// 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
//popupMenu.dismiss();
StationEventCaptain.getInstance().fireEventDataChange(
new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true));
return true;
}
return false;
}
});
//初始化键盘上的数字
initALLDig(view);
}
@Override
public PopupWindow createPupupWindow() {
return popupMenu;
}
@Override
public void showPopupMenu() {
if (popupMenu != null && popupMenu.isShowing()) {
popupMenu.dismiss();
StationEventCaptain.getInstance().fireEventDataChange(
new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true));
} else {
//popupMenu.showAsDropDown(sourceEditView);
int pianyi = dpToPx(activity, 8);
if (keyboardType == IPopupMenu.MENU_TYPE_HEDGE_Left) {
popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.LEFT, pianyi, 0); //设置layout在PopupWindow中显示的位置
} else if (keyboardType == IPopupMenu.MENU_TYPE_HEDGE_RIGHT) {
popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.RIGHT, pianyi, 0); //设置layout在PopupWindow中显示的位置
} else {
popupMenu.showAtLocation(keylinearlayout, Gravity.BOTTOM | Gravity.LEFT, 0, 0); //设置layout在PopupWindow中显示的位置
}
// popupMenu.showAsDropDown(sourceView,
// Math.round(sourceView.getX()),
// (int) (sourceView.getY()));
}
}
/**
* 将dp转成像素的
*
* @param context
* @param dp
* @return
*/
static int dpToPx(final Context context, final float dp) {
return (int) (dp * context.getResources().getDisplayMetrics().density);
}
@Override
public void destroyPopupMenu() {
popupMenu.dismiss();
StationEventCaptain.getInstance()
.fireEventDataChange(new StationEventData(IStationEventName.HEDGE_KEYBORAD_DIMISS, true));
}
成功解决,有问题可以讨论。
以上这篇android popuwindow点击外部窗口不消失的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# dialog点击外部不消失
# Android7.0 工具类:DiffUtil详解
# 适配android7.0获取文件的Uri的方法
# Android7.0 MessageQueue详解
# Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)
# Android中PopuWindow实现下拉列表实例
# Android adb.exe程序启动不起来 具体解决方法
# Android Studio的中文乱码问题解决方法
# Android Activity切换(跳转)时出现黑屏的解决方法 分享
# 基于Android中实现定时器的3种解决方法
# Android SDK三种更新失败及其解决方法
# Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法
# 给大家
# 也会
# 但我
# 希望能
# 问题是
# 将被
# 是说
# 这篇
# 不被
# 小编
# 让其
# 转成
# 大家多多
# 网上
# setInputMethodMode
# update
# INPUT_METHOD_NEEDED
# true
# setTouchable
# AnimBottom
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
制作旅游网站html,怎样注册旅游网站?
米侠浏览器网页背景异常怎么办 米侠显示修复
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
深圳网站制作培训,深圳哪些招聘网站比较好?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
C#如何调用原生C++ COM对象详解
如何快速生成高效建站系统源代码?
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
手机网站制作与建设方案,手机网站如何建设?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
高性价比服务器租赁——企业级配置与24小时运维服务
简历没回改:利用AI润色让你的文字更专业
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】
如何快速搭建安全的FTP站点?
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】
如何安全更换建站之星模板并保留数据?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
Laravel怎么实现验证码(Captcha)功能
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
活动邀请函制作网站有哪些,活动邀请函文案?
EditPlus 正则表达式 实战(3)
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何快速上传自定义模板至建站之星?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
千库网官网入口推荐 千库网设计创意平台入口
node.js报错:Cannot find module 'ejs'的解决办法
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel怎么在Blade中安全地输出原始HTML内容
iOS验证手机号的正则表达式
香港服务器租用费用高吗?如何避免常见误区?
制作电商网页,电商供应链怎么做?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
如何在阿里云高效完成企业建站全流程?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
如何彻底卸载建站之星软件?

