Android 7.0+ popwindow的适配

长话短说,直接上代码:

 override fun showAsDropDown(anchor: View?) {
        if (Build.VERSION.SDK_INT >= 24) {
            val rect = Rect()
            anchor!!.getWindowVisibleDisplayFrame(rect)
            val h = anchor.resources.displayMetrics.heightPixels - rect.bottom
            height = h
        }
        super.showAsDropDown(anchor)
    }

在自定义popwindow中复写此方法即可得到适配,并且适配全面屏,以往的用achor.getGlobalVisibleRect会造成全面屏的适配问题,注意不要用错方法。

使用getGlobalVisibleRect的全面屏显示.png

使用getWindowVisibleDisplayFrame的全面屏显示.png

说明:网络上大多数都是用的global的方法导致很多情况下全面屏显示不好,底部虚拟按键位置空出,所以正确的方法应该用WindowVisibalDisplay。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android开发小工

在Android开发中怎样使用Application类

自己独立开发项目才发现以前对Application类并不是十分了解,现在开始直接搭建一个新项目的框架才重新踩过这个坑。

1325
来自专栏分享达人秀

Activity初入门,创建和配置如此简单

Activity是Android应用的重要组成单元之一,也是Android应用最常见的组件之一。前面看到的示例通常都只包含一个Activity或一个Ap...

2005
来自专栏向治洪

android Universal Image Loader for Android 说明文档 (1)

All manipulations are held by the ImageLoader class. It is a singletone, so to ...

2008
来自专栏小鄧子的技术博客专栏

【译】Retrofit 2 - 如何从服务器下载文件

如果你在阅读本文前没有写过任何一行Retrofit请求代码,那么最好看一下前面几篇博客。对于很多Retrofit使用者来说:定义一个下载文件的请求与其他请求几乎...

1821
来自专栏7号代码

Android网络与数据存储——File存储(实现SD卡文件浏览器)

AndroidManifest.xml中manifest标签下有一个属性android:installLocation,用于指定应用程序安装在什么地方,该属性有...

2423
来自专栏项勇

笔记13 | 练习Volley(二)加载网络图片的三种方法

1334
来自专栏Android干货

Android项目实战(二十八):Zxing二维码实现及优化

3436
来自专栏向治洪

Android-Universal-Image-Loader图片异步加载并缓存

 这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影。        可是有的人...

2576
来自专栏程序员的诗和远方

搭建安卓开发环境(Android Studio)

最近想用业余时间学习一下android,教程,书本上以eclipse+adt居多,实际搜索一下,现在android studio好评还是比较多的,而且是goo...

6327
来自专栏酷玩时刻

统一管理项目中的接口回调

无论是 Java Web 开发还是 Android 开发我们都避免不了异步处理业务的逻辑。有异步的出现一定就有异步结果(接口)的回调。你之前是不是有为每一个异步...

904

扫码关注云+社区