本文测试环境为Android7.0版本的小米4,因为今天是年前最后一天上班的关系,才有时间写个博客,也是这个原因,心情浮躁,没有时间做多余的测试。所以尚不清楚是机型适配问题还是Android7.0版本的问题。因为产品中存在沉浸栏,之前怀疑是沉浸栏对此功能的适配性不佳,后来去掉沉浸栏发现问题仍然存在。


下面进入正题。

UI要求的效果如下图所示:

android 运行显示在其他应用的上层 默认打开 miui 显示在其他应用的上层_android

一切都很正常,直到测试拿出小米4手机测试,效果却变成了这样:

android 运行显示在其他应用的上层 默认打开 miui 显示在其他应用的上层_适配_02

这踏马的就尴尬了不是么???

我使用的方法为:

android 运行显示在其他应用的上层 默认打开 miui 显示在其他应用的上层_popupwindow_03

popupwindow.showAsDropDown(view,x,y),

这个方法可以指定一个控件的下方显示当前popupwindow。且能控制间距。

我这里传入的view为右上角的蓝色小图标,但是显然这条属性在小米4上是失效了的。

后来把popupwindow的高设置成包裹内容,就可以了,小米4手机上popupwindow在需求的控件下方显示。但是又有一个问题出现了,UI要求的是剩余部分为透明灰色啊,把控件写成包裹内容虽然解决了机型适配问题,但是屏幕剩余部分则变成了纯透明色啊,activity里的内容展露无遗,UI不同意也没办法通过测试啊。

最后实在找不到方法了,只能做点小手脚了。popupwindow的宽高仍然为充满父窗体,但是,我可以把popupwindow多套一层布局,让其最外层为纯透明色,而内层则为透明灰色,同时具备上边距margin,高度则看UI需求了。同时,我在activity的布局最上方写了一个高度为0 的View,让它作为popupwindow的锚点,(根布局应该也可以,没有试)。这样,在普通手机上popupwindow距离手机顶端的控件有上边距,而小米4这种不支持的手机则是距离手机上顶端有上边距,结局还是一样的。

这样,解决了机型适配的问题。

android 运行显示在其他应用的上层 默认打开 miui 显示在其他应用的上层_android_04


下面简单贴一下代码:

popupwindow的代码:

android 运行显示在其他应用的上层 默认打开 miui 显示在其他应用的上层_android7.0_05


popupwindow的布局代码:

android 运行显示在其他应用的上层 默认打开 miui 显示在其他应用的上层_android_06


希望能帮助到一些人。虽然我知道我博客写的很烂···=_=求不扔臭鸡蛋。如有更好的办法解决,欢迎一起沟通讨论,求大神们照看。