Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法

本文实例讲述了Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法。分享给大家供大家参考,具体如下:

情景描述:

在andorid7.0及以上系统,点击某个view,本来期待有一个Popuwindow在该view下面弹出(调用PopuWindow.showAsDropDown(view)方法)但结果PopuWindow却弹出在view上方,顶在系统状态栏下面。

原因分析:

在android7.0上,如果不主动约束PopuWindow的大小,比如,设置布局大小为 MATCH_PARENT,那么PopuWindow会变得尽可能大,以至于 view下方无空间完全显示PopuWindow,而且view又无法向上滚动,此时PopuWindow会主动上移位置,直到可以显示完全。

解决办法:

主动约束PopuWindow的内容大小,重写showAsDropDown方法:

@Override public void showAsDropDown(View anchor) { if(Build.VERSION.SDK_INT >= 24){ Rect visibleFrame = new Rect(); anchor.getGlobalVisibleRect(visibleFrame); int height = anchor.getResources().getDisplayMetrics().heightPixels - visibleFrame.bottom; setHeight(height); } super.showAsDropDown(anchor); }

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android窗口相关操作技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-10-24 11:29:23

Android7.0上某些PopuWindow出现显示位置不正确问题的解决方法的相关文章

win8商店不显示Win8.1更新的解决方法

  用户对系统的更新是非常有必要的,系统更新是微软为弥补系统设计中的不足,而需不断发现.不断弥补的系统子程序,如微软针对不同系统不断发布新的补丁来补漏.所以说更新系统对电脑安全的维护是重要的.现在的win8系统的更新一改之前繁琐的更新步骤,在其自带的应用商店中就能进行升级更新操作,但是最近有用户在升级更新时遇到应用商店中不显示Win8.1更新,接下来小编就为大家介绍win8电脑的应用商店中不显示Win8.1更新的解决方法. win8不显示Win8.1更新的解决方法 1.首先,我们需要返回到win

Win7系统自带还原按钮显示灰色无法还原的解决方法

  现在的白领.大学生几乎离不开电脑,电脑.网络包罗万象,大学生查资料,看课件,视频,文档--白领搜索文献,画图,做图表--一系列网页可能同时打开,也可能好几个软件同时打开,这样必不可免的伤害电脑,系统出现问题也是时常出现的问题.问题出现不大时可以不用重装系统,一键还原简单有效,但是win7系统有时还原按钮会呈灰色(不能点击使用),这个时候,就需要小编提供的小妙招啦! Win7系统自带还原按钮显示灰色无法还原的解决方法如下: 1.首先,单击打开Win7旗舰版电脑的开始菜单,然后进入到控制面板中.

ubuntu上在androidstudio中启动emulator闪退的解决方法

阅读目录(Content) 平台 现象 解决 一.查看模拟器的信息 二.命令行运行模拟器 平台 Ubuntu14.04 64 现象 在AndrodStudio中点击模拟器的启动按钮后,模拟器界面弹出后,又立刻闪退. 解决 一.查看模拟器的信息 从上面可以看到模拟器的存放路径以及名称: 路径:/home/pengdonglin/.android/avd/4_WVGA_Nexus_S_API_24.avd 名称:4_WVGA_Nexus_S_API_24 架构:x86_64 二.命令行运行模拟器 在

php连接不上mysql但mysql命令行操作正常的解决方法

 这篇文章主要介绍了php连接不上mysql但mysql命令行操作正常的解决方法,需要的朋友可以参考下 故障状况:php网站连接mysql失败,但在命令行下通过mysql命令可登录并正常操作. 解决方案: 1.命令行下登录mysql,执行以下命令:  代码如下:show variables like 'socket'; 执行后会得到类似于如下回显:  代码如下: "Variable_name"        "Value" "socket"  

win7系统设备管理器摄像头驱动显示黄叹号的解决方法

win7系统设备管理器摄像头驱动显示黄叹号的解决方法分享给大家,设备管理器摄像头驱动显示黄叹号,安装驱动过程提示注册表损坏,摄像头是很多人在聊天和上网过程中精彩使用到的设备,摄像头驱动有问题自然就无法使用,据分析是注册表文件出现问题.有遇到此问题的朋友赶紧跟小编一起来学习一下吧! 操作方法: 1.首先点击"开始"---所有程序---打开运行; 2.输入regedit,win8系统下载,打开注册表编辑器; 3.找到HKEY_LOCAL_MACHINESYSTEMCurrentContro

Android 文件夹显示红色叹号的解决方法(必看)

有感叹号,说明有的文件损坏或丢失了 解决方法: 右击工程,Build Path..->Configure Build Path...->Java Build Path 可以看到引用的jar包,看看是不是带x了 不用的话就移除,要用的引用回正确路径就可以了 以上这篇Android 文件夹显示红色叹号的解决方法(必看)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家.

RHEL 6/CentOS 6上安装Oracle 11.2.0.3(Gird/Database)及以上缺少pdksh包的解决方法

在RHEL 6/CentOS 6上安装Oracle Grid 11.2.0.3/Oracle Database 11.2.0.3及以上时,出现elfutils-libelf-devel和pdksh包缺少的提示: 但是实际上这两个包是不需要的,可以忽略继续安装.但是有Warning总归是让人不舒服的. 解决方法: 1.解压安装包目录下 2.cd /stage/cvu/cv/admin 该目录下有个cvu_config的配置文件,编辑这个配置文件,将其中的:CV_ASSUME_DISTID=OEL4

Win7 IE浏览器右键菜单显示英文的原因及解决方法

  一.原因分析 在中文版的win7旗舰版系统中IE浏览器显示英文,大多是由于用户在升级高版本IE的时候安装了英文版的IE浏览器,比如原先是IE8中文版,升级安装成了IE9英文版,这样打开网页菜单什么的自然是英文了. 二.解决方法 方法一:下载对应的IE浏览器版本中文语言包,比如安装的是IE9,那么去网上下载IE9的中文语言包进行安装,安装后就可显示为中文了 方法二:卸载刚安装上的IE浏览器,回滚到之前的版本,同样也会回到中文显示了.

firefox和谷歌不显示body背景图片的解决方法

样式如下只有IE可以显示背景图片,火狐和谷歌等浏览器都显示不了,解决方法如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助     复制代码 代码如下: body { background:#F5F5F5 url(../images/a_55.jpg) no-repeat bottom left; margin:0; padding:0; font-family:"微软雅黑", "宋体", Arial, Verdana, sans-serif; font-size: