首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PopupWindow 点击外部和返回键无法消失背后的真相(setBackgroundDrawable(Drawable background))

刚接手PopupWindow的时候,我们都可能觉得很简单,因为它确实很简单,不过运气不好的可能就会踩到一个坑: 点击PopupWindow最外层布局以及点击返回键PopupWindow不会消失 新手在遇到这个问题的时候可能会折腾半天...下面从源码(我看的是android-22)上看看到底发生了什么事情导致返回键不能消失弹出框: 先看看弹出框显示的时候代码showAsDropDown,里面有个preparePopup方法。...} @Override public boolean dispatchKeyEvent(KeyEvent event) {  // 这个方法里面实现了返回键处理逻辑...,这个内部类里面封装了处理返回键退出和点击外部退出的逻辑,但是这个类对象的构造过程中(preparePopup方法中)却有个mBackground !...View.LAYOUT_DIRECTION_INHERIT); mPopupWidth = p.width; mPopupHeight = p.height; } 这里实现返回键监听的代码是

1.9K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    web app 中物理返回键的监听

    使用Vue + Vant 进行web app 的开发,需要处理 android 自带的物理返回键,对不同页面,点击物理返回键进行不同的处理 那如何监听到物理返回键,并进行相应的处理?...01 app网页返回键 vs 手机物理返回键 网页上的返回键是返回上一个页面的意思, 手机上的返回键是返回上一个操作。...并且手机上的返回键还有很多其它功能,在使用某些软件可以双击返回键退出app 02 Vue 中监听物理返回键 使用h5+ 提供的 plus 对象进行处理,具体代码如下 document.addEventListener...,处理程序,写在 plusReady 方法中,即可 04 单击返回,双击退出app 实现,单击返回键进行退出,双击退出app 分析:通过一个 first 变量来记录次数,且两次点击的时间间隔不能超过...if (e.canBack) { webview.back(); } else { //首页返回键处理

    1.2K20

    Toolbar去除标题与返回键间的间距

    间距正常 标题和左侧的返回键间距过大,之前在做CloudReader的时候就遇到了,一直没有解决,由于自身强迫症,心里始终和这个过不去,就研究了很久终于解决了。...最后: 将mTitleToolBar.setNavigationIcon(R.drawable.icon_back);去掉后,发现标题顶格了,于是怀疑是NavigationIcon的问题。...将app:navigationIcon="@drawable/icon_back"设置在ToolBar属性上后可以直接看到效果,开始考虑是不是有一个属性是设置NavigationIcon与title之间的间距...ToolbarStyle" app:title="标题" app:titleTextColor="@color/colorWhite"> ---- 后来直接搜了这个属性查了一下...,发现之前还是有很多人遇到过,只不过我没检索出来,推荐一个分析的很好的: 关于Toolbar中navigationIcon和title之间距离及展开 app:contentInsetStartWithNavigation

    1.8K10

    WebAPI返回数据类型解惑 以及怎样解决Extjs无法解析返回的xml

    2.怎么修改WebAPI的返回数据类型,我用IE浏览器请 求返回的数据都是JSON格式的,用Firefox和Chrome返回数据格式是XML,然后自己用HttpWebRequest请求返回的是JSON格...IE浏览器返回的数据是json,而使用Firefox和Chrome返回的则为xml,经研究发现IE在发生http请求时请求头accpet节点相比Firefox和Chrome缺少"application/...=0.9,结果返回了xml 由此可以得出结论:   WebAPI的返回数据类型是有请求头的accept来决定的,默认返回类型为json     1.application/json和application.../json和application/json时,返回数据类型和两者的顺序无关,若两者优先级相同则返回json,若优先级不同则返回优先级高的类型 详见下表: Accept头 返回类型 application...              config.Formatters.Remove(config.Formatters.XmlFormatter);          }  好,在重新调试就不会出现Extjs无法解析什么什么的错误了

    1.9K80

    Android 双击返回键退出程序的3种写法~

    ---- 记得去年曾经让LZ写一个连续点击返回键俩次退出程序,,,憋了好久没憋出来。。。23333。。。 下面先说说LZ思路,具体如下: 1....用户点击肯定会触发相应的事件,,,我们先来看下面俩个事件的作用。。。 Activity.onKeyDown(): 当某个键被按下时会触发,但不会被任何的该Activity内的任何view处理。...默认没有执行任何操作,只是简单的给一个false作为返回值。So,,,接下来分别使用如上俩个方法干掉这个当年的拦路虎 ---- 1....One Way:onKeyUp() //记录用户首次点击返回键的时间 private long firstTime=0; @Override public boolean...Two Way:onKeyDown() //记录用户首次点击返回键的时间 private long firstTime=0; @Override public boolean

    1.7K20

    SpringBoot返回枚举对象中的所有属性以对象的形式返回(一个@JSONType解决)

    一些固定不变的数据我们可以通过枚举来定义,减少对数据库的查询。是一种常见的开发技巧! 常见场景的需求是:通过某一个属性获取对应的枚举属性的另一个值;还有就是常量枚举,比如一下统一返回状态和编码!...==小编的需求是把枚举中的所有属性都取出来,转成实体类那种返回给前端!== 最简单的解决就是拿到所有的然后便利加到新的集合里,这样还需要定义一个实体类来接收转一下!...这样有点麻烦,小编也是无意发现了,项目中有以前大佬留下来的一个注解@JSONType(serializeEnumAsJavaBean = true),一加上只需要我们使用枚举.values()即可直接帮助我们返回了

    3.9K10

    System.InvalidOperationException:“BuildWindowCore 无法返回寄宿的子窗口句柄。”

    当试图在 WPF 窗口中嵌套显示 Win32 子窗口的时候,你有可能出现错误:“BuildWindowCore 无法返回寄宿的子窗口句柄。”。...一般情况下我们当然不会这么去做,但是如果我们要跨越进程边界来完成 WPF 渲染内容的融合的时候,就需要嵌入一个新的窗口了。...由于窗口句柄是可以跨越进程边界传递的,所以这样的方式可以完成跨进程的 WPF 控件显示。...问题 你有可能在调试嵌入窗口代码的时候遇到错误: System.InvalidOperationException:“BuildWindowCore 无法返回寄宿的子窗口句柄。”...原因和解决办法 此异常的原因非常简单,是 HwndSource 的 BuildWindowCore 的返回值有问题。具体来说,就是子窗口的句柄返回了 0。

    38340

    Power Query里的数据怎么无法返回Excel里了?

    最近,又一大波朋友开始接触Power Query,于是,在操作过程中频发基础问题,对于这些问题,我在前期的基础文章里基本都有涉及,但因为问题本身比较简单,所以并没有独立成相应的文章,但是,...小新:我在Power Query里处理完的数据怎么无法返回Excel了啊? 大海:哦?还有这种事情? 小新:你看,这里的“关闭并上载至...“按钮都灰掉了。 大海:啊。原来是这个问题。...Power Query里的数据上载后,在Power Query里就不能直接改数据的上载方式了。但是,可以回到Excel里改。非常简单: 1. 在数据菜单里单击“显示查询” 2....右击需要修改上载方式的查询,单击“加载到...”按钮 3.在弹出的对话框中即可修改数据加载方式 小新:原来这样啊。...大海:其实,这些内容在我前期的基础文章里都有涉及,而且都不厌其烦不怕重复地写了所有操作步骤。所以,建议先去把我原来写的一些基础系列的文章跟着练一遍。 小新:好的。一定好好看!

    2.7K10

    手机端CSS :hover点击后返回无法取消的解决方法

    今天写项目时遇到一个问题,设置 :hover 属性的链接,点击后或者点击进入下一个页面返回依旧是 :hover 状态。 ?...我们可以使用 :active 属性来解决: a:active{     background: #f2f2f2; } 拓展: a:link 英文link就是链接的意思,代表当一段文本为链接时的属性。...a:visited 英文visited就是访问过的意思,代表这段文本被点击之后的属性。 a:hover 英文hover就是悬停的意思,代表鼠标指针放在这个链接上时的属性。...a:active 英文active就是有效的、快速的意思,代表鼠标按下时一瞬间的属性。 a:focus 英文active就是聚焦的意思,代表元素获得焦点时向元素添加特殊的样式。...声明:本文由w3h5原创,转载请注明出处:《手机端CSS :hover点击后返回无法取消的解决方法》 https://www.w3h5.com/post/353.html

    3.9K10

    Spring的cglib代理类无法取到被代理类的成员属性

    cglib的原理是生成一个被代理类的子类进行增强, 那么为什么子类访问不到父类的属性呢 @Service public class AopTestService { public String...根据aop代理规则, imTest方法可以被代理, 下面就是cglib生成的子类方法, 通过var10000.intercept代理拦截器, 最终使用源类AopTestService的对象去调用imTest...第二行: bool2为true, 因为noImTest方法被final修饰, 无法被代理增强, 所以最终是通过cglib生成的子类去调用父类AopTestService的noImTest方法....但是this.value输出null, 这是因为cglib生成的子类对象, 是通过objenesis这个库实例化的, objenesis这个库的作用是绕过构造方法实例化对象....所以对象没有正常的初始化, 父类的value属性也就没有了 3. 第三行, this.getValue输出了.

    1.8K00

    【Python】字典 dict ① ( 字典定义 | 根据键获取字典中的值 | 定义嵌套字典 )

    一、字典定义 Python 中的 字典 数据容器中 , 存储了 多个 键值对 ; 字典 在 大括号 {} 中定义 , 键 和 值 之间使用 冒号 : 标识 , 键值对 之间 使用逗号 , 隔开 ; 集合..., 同样 字典中的 若干键值对中 , 键 不允许重复 , 值是可以重复的 ; 字典定义 : 定义 字典 字面量 : {key: value, key: value, ... , key: value..., 由于 字典中的 键 不允许重复 , 新的键值对会将老的键值对覆盖掉 ; 代码示例 : """ 字典 代码示例 """ # 定义 字典 字面量 {"Tom": 18, "Jerry": 16, "...Jack': 21} age = my_dict["Tom"] print(age) # 80 执行结果 : {'Tom': 80, 'Jerry': 16, 'Jack': 21} 80 四、定义嵌套字典...字典 中的 键 Key 和 值 Value 可以是任意的数据类型 ; 但是 键 Key 不能是 字典 , 值 Value 可以是字典 ; 值 Value 是 字典 数据容器 , 称为 " 字典嵌套 "

    28030
    领券