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程序设计有所帮助。
相关推荐
-
Android7.0 工具类:DiffUtil详解
一 概述 DiffUtil是support-v7:24.2.0中的新工具类,它用来比较两个数据集,寻找出旧数据集->新数据集的最小变化量. 说到数据集,相信大家知道它是和谁相关的了,就是我的最爱,RecyclerView. 就我使用的这几天来看,它最大的用处就是在RecyclerView刷新时,不再无脑mAdapter.notifyDataSetChanged(). 以前无脑mAdapter.notifyDataSetChanged()有两个缺点: 1.不会触发RecyclerView的动画(删
-
Android SDK三种更新失败及其解决方法
最近在网上看Moto 360的图片,真是帅,帅了又帅,比帅更帅.所以想研究下Android wear. 更新Android SDK,居然失败了三次. 1.第一次失败 出现Failed to fetch URL错误提示 Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Connection to https://dl-ssl.google.com refused Fa
-
Android中PopuWindow实现下拉列表实例
前言 之前讲过一篇关于PopuWindow的基本使用的文章,想了解的同学可以参考:PopupWindow的基本使用 其实,下拉列表Spanner(不知道控件拼写是否正确)就能实现,但是基于ui美化方面的考虑,用popuwindow实现是一个不错的选择,今天就来讲讲PopuWindow实现下拉列表的具体实现吧. 正文 文章可能会有点长,大家将就着看吧.先上波效果图才是厚道的: 下面开始正式讲解. 基础依赖,由于下拉列表是用RecycleView实现,然后控件初始化用到ButterKnife,所以要
-
基于Android中实现定时器的3种解决方法
在Android开发中,定时器一般有以下3种实现方法:一.采用Handler与线程的sleep(long)方法二.采用Handler的postDelayed(Runnable, long)方法三.采用Handler与timer及TimerTask结合的方法下面逐一介绍:一.采用Handle与线程的sleep(long)方法Handler主要用来处理接受到的消息.这只是最主要的方法,当然Handler里还有其他的方法供实现,有兴趣的可以去查API,这里不过多解释.1. 定义一个Handler类,用
-
Android adb.exe程序启动不起来 具体解决方法
经常遇到 Please ensure that adb is correctly located at 'D:\java\sdk\platform-tools\adb.exe' and can be executed. 遇到问题描述: 运行android程序控制台输出 [2012-07-18 16:18:26 - ] The connection to adb is down, and a severe error has occured. [2012-07-18 16:18:26 - ]
-
Android7.0 MessageQueue详解
Android中的消息处理机制大量依赖于Handler.每个Handler都有对应的Looper,用于不断地从对应的MessageQueue中取出消息处理. 一直以来,觉得MessageQueue应该是Java层的抽象,然而事实上MessageQueue的主要部分在Native层中. 自己对MessageQueue在Native层的工作不太熟悉,借此机会分析一下. 一.MessageQueue的创建 当需要使用Looper时,我们会调用Looper的prepare函数: public stati
-
适配android7.0获取文件的Uri的方法
前言# Android 7.0已经发布很久了,虽然市场份额还不是很高,但是流行起来都是早晚的事,所以适配Android 7.0刻不容缓. Android 7.0 对系统进行了很多的优化:例如文件访问权限,省电,网络,后台等等,其中最突出的就是应用外的Uri访问. 什么时候会用到Uri的应用外访问呢?举一个简单的例子,下载apk更新,这个时候会调用系统功能来安装这个apk,这就是应用外访问文件,需要传入文件的Uri. 但是这样可能会显得不太安全,万一是什么非常重要的文件就糟糕了,所以Android
-
Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)
Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像. Problem: 拍好照片,点击裁剪,弹Toast"无法加载此图片". Solution: 在裁剪的class里加两行代码 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 主要代码如下: public static final S
-
android popuwindow点击外部窗口不消失的实例
网上大多数都是说如何监听点击外部消失,但我遇到的问题是点击外面不让其消失,如下是我的解决方案,关键是:popupMenu.setBackgroundDrawable(null);popupMenu.setFocusable(false); popupMenu = new PopupWindow(view, keylinearlayout.getWidth(), LayoutParams.WRAP_CONTENT); ColorDrawable cd = new ColorDrawable(R.c
-
Android Activity切换(跳转)时出现黑屏的解决方法 分享
在两个Activity跳转时,由于第二个Activity在启动时加载了较多数据,就会在启动之前出现一个短暂的黑屏时间,解决这个问题比较简单的处理方法是将第二个Activity的主题设置成透明的,这样在启动第二个Activity时的黑屏就变成了显示第一个Activity界面.这个分两步完成:第一步:xxx/res/values/styles.xml中加入自定义Activity的Theme,如下所示: [html] <style name="Transparent" parent=
-
Android Studio的中文乱码问题解决方法
Android Studio安装后发现所有的中文,不管是界面上的还是输出的log中的中文都变成小框框 可以肯定是字体的问题 解决:菜单File->settings对话框,切换到Appearance标签 选择override default fonts by, 先随便选择一个中文字体(PS:小框框都是中文字 呵呵),保存,重启软件,即可.
随机推荐
- 关于Linux反空闲设置的两种方法总结
- Java判断字符串为空、字符串是否为数字
- C#中的FileUpload 选择后的预览效果具体实现
- 利用javascript如何随机生成一定位数的密码
- ASP.NET动态添加用户控件的方法
- PHP实现bitmap位图排序与求交集的方法
- memcache命令启动参数中文解释
- phpmailer 中文使用说明(简易版)
- C#通过创建Windows服务启动程序的方法详解
- 讲解使用Docker搭建Java Web运行环境
- Javascript显示和隐藏ul列表的方法
- windows服务器记录3389远程桌面IP策略
- 深入理解Java编程中异常处理的优劣
- 在域环境中配置ISA Server 2004的图文教程第1/2页
- Android短信验证码(用的Mob短信验证)
- js获得地址栏?问号后参数的方法
- Android实现授权访问网页的方法
- 利用Python暴力破解zip文件口令的方法详解
- Spring Security认证提供程序示例详解
- spring boot入门开始你的第一个应用