首页
学习
活动
专区
圈层
工具
发布

Android PopupMenu and PopupWindow

本文通过一个实例简单介绍下PopupMenu和PopupWindow的区别和各自使用方式。...2.实例基础代码 我们要实现的界面就是上面所示的界面,上下各有两个按钮,点击按钮分别在正确的位置弹出PopupMenu或者PopupWindow,下面是界面代码: 的动画效果代码如下,需要注意的是,PopupWindow需要两个动画:一个进入,一个退出,如果只给定一个动画,可能会看不到动画的效果。...android:duration="200"/> (3)使用PopupWindow还有不少需要注意的地方,例如你上面看到的代码中很多判断popupwindow是否为null或者是否正在显示等,有一个情况是...,如果用户点击返回键,默认情况下Activity就要退出了,这个时候PopupWindow没有dismiss,容易出现内存泄露的报错,所以我们要处理下这个问题,如果用户点击返回键的时候PopupWindow

2.5K21

【Android】PopupWindow弹窗

一:需求及总代码 我们使用AlertDialog的时候一般不会去改变它的位置(默认居中),如果我们想去指定一个在任意位置显示的弹窗,可以使用Popup Window,它对于位置的控制会更加灵活 点击显示一个底部弹窗按钮...源码 PopupWindow弹窗,可以让我们对于弹窗位置的控制会更加灵活, 1:构造方法 构造方法的重载,最常用的是最后一种 两种写法创建PopupWindow,合在一起,分开都可以 View view...根布局的高度 PopupWindow根布局的高度不要写成match_content(匹配父布局),PopupWindow的设计初衷是作为 “轻量级悬浮弹窗”,而非全屏视图。...使用**wrap_content**或精确指定高度,才能让PopupWindow的行为符合预期,避免隐藏的兼容性与用户体验问题。...四:收获 PopupWindow的创建方式,怎么修改它的透明度,弹窗的监听器怎么样

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

    【Android】PopupWindow实现长按菜单

    上一章已经细讲过,这里尽量不啰嗦 简述:把复制粘贴的布局转为视图,转载到PopupWindow上创建,设置外部可触摸后关闭,最后在主函数中调用这个方法 /** * 创建消息弹窗...因为PopupWindow没有真正的加入到当前的页面,如何获取它的高度??...方案:在弹窗显示之前先让它显示一遍,第一次显示后就可以获取到它的高度了 1:获取PopupWindow高度 声明为成员变量,方便下面访问它的高度和宽度 /** * 处理...为毛弹窗高度还是-2,因为第一次显示后,立刻就关闭弹窗,此时弹窗视图来不及被创建,需要等第一次的PopupWindow真的显示出来了,才能获取到它的高度 解决方案:我们去通过监听它的根布局加载成功后,...通过根布局获取弹窗的高度 这句代码的作用就展示出来了兄弟,声明为成员变量,便于使用 调post方法,+改名 获取PopupWindow根布局的高度,其实就是PopupWindow本身的高度 3:isShowing

    17810

    Android技能树 — PopupWindow小结

    主要分为三部分: PopupWindow的使用 PopupWindow工具类的封装 PopupWindow源码分析 正文 我们知道上来直接给一大串的源码,很少有人会继续看下去,所以我们就自己先写个下拉选择框...这些内容: 显示的contentView PopupWindow要显示的宽和高, PopupWindow是否有获取焦点的能力(默认false)。...的右下角与PopupWindow的左上角对齐了。...2.PopupWindow工具类封装 我在以前写过Dialog的封装文章: 项目需求讨论-Android 自定义Dialog实现步骤及封装 我们这次来对PopupWindow来进行封装,我们还是像上面的文章那样...我们应该都做过或者看见过添加悬浮窗等功能,或者在某些文章看见过Window和WindowManager的介绍,比如在《Android艺术开发之旅》里面,也有相关的一章专门讲这个,大家可以看下: Android

    1.7K11

    Android技能树 — PopupWindow小结

    这次正好又有一个下拉框的需求,所以这次我使用了PopupWindow来实现的。...主要分为三部分: PopupWindow的使用 PopupWindow工具类的封装 PopupWindow源码分析 正文 我们知道上来直接给一大串的源码,很少有人会继续看下去,所以我们就自己先写个下拉选择框...这些内容: 显示的contentView PopupWindow要显示的宽和高, PopupWindow是否有获取焦点的能力(默认false)。...-Android 自定义Dialog实现步骤及封装 我们这次来对PopupWindow来进行封装,我们还是像上面的文章那样,使用Builder模式。...我们应该都做过或者看见过添加悬浮窗等功能,或者在某些文章看见过Window和WindowManager的介绍,比如在《Android艺术开发之旅》里面,也有相关的一章专门讲这个,大家可以看下: Android

    74910

    【Android】在任意位置弹出PopupWindow

    前言 在日常的开发中,经常会有弹框的操作。实现弹框有两种选,PopupWindow或者Dialog,这里就先忽略Dialog。...PopupWindow 平时我们可能是这样用PopupWindow的: 创建一个布局,再创建一个类继承PopupWindow public class TestPopupWindow extends...如果你的PopupWindow宽高不确定,这两个参数你也不知道该写多少。 什么!你的PopupWindow宽高都写死了?骚年,你还是太年轻了。...各种位置的弹窗 下面就来利用xoff、yoff在你想要的任何位置弹框。 准备工作 弹框前,需要得到PopupWindow的大小(也就是PopupWindow中contentView的大小)。...参考 RelativePopupWindow EasyPopup Android弹窗_PopupWindow详解 (挺详细的) 以上有错误之处,感谢指出

    5.3K110

    Android从屏幕底部弹出popupWindow

    Android从屏幕底部弹出popupWindow 先看一下效果,看看是不是你想要的效果,免得浪费大家的时间,有一点说明,由于我录制的 gif 是用的模拟器,所以没有屏幕变暗的效果和加速的弹起的效果,实际效果以真机测试为准...="@drawable/popupwindow_shape" android:gravity="center" android:orientation="vertical...> 2.代码部分 我此处用的是一个加速的平移动画,从屏幕底部弹出,然后将屏幕的亮度变暗,让popupwindow获取焦点,就可以实现了popupwindow从手机屏幕底部弹出的效果...private PopupWindow popupWindow; // 声明PopupWindow对应的视图 private View popupView; // 声明平移动画...} // 设置popupWindow的显示位置,此处是在手机屏幕底部且水平居中的位置 popupWindow.showAtLocation(SettingActivity.this.findViewById

    3.9K30

    Android弹窗二则: PopupWindow和AlertDialog

    这里说两个常用的弹窗类, PopupWindow和AlertDialog. 我的理解就是, PopupWindow较为随性, 可以在任意位置弹窗, 比如你经常看到的朋友圈点赞的那个小的弹窗....为了保护你的眼睛, 图片已处理 ---- PopupWindow 官方文档传送门 实例解析 先来看一段常规的PopupWindow的使用, 然后逐行分析下....PopupWindow popupWindow = new PopupWindow(); popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT...如果想要显示一个弹窗, 这三句话是必须的. 然后popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000));这个很有意思....popupWindow.setFocusable(true);是比较重要的, 一般都为true, 也就是弹窗之后, 焦点就到了弹窗, 你再点击其它地方, 弹窗失去焦点就会消失. popupWindow.setOutsideTouchable

    1.9K60

    Android 必知必会 - DialogFragment 实现类似 PopupWindow 效果

    micro.blog.csdn.net/article/details/72834008 如果移动端访问不佳,请访问 ==> Github 版 近期有网友根据 Android...必知必会 - DialogFragment 使用总结 做一些业务,但是目标却是用 DialogFragment 实现类似 PopupWindow 效果: 只拦截自身所占空间部分的事件,其余空间的点击事件不处理...可以根据某个 View 定位自身位置 虽然在功能上 PopupWindow 更符合需要,但是使用 DialogFragment 代码更简洁、更方便封装功能模块。...Android必知必会-获取View坐标和长宽的时机 一文。...总结 总的来说,这里基本完成了要求的效果,但是定位只能指定其顶部开始的位置,不方便底部定位到某个 View 的上面,因为高度自适应的话,在页面渲染完成前是不能知道它的高度的。

    2K20

    Android PopupWindow怎么合理控制弹出位置(showAtLocation)

    说到PopupWindow,应该都会有种熟悉的感觉,使用起来也很简单 // 一个自定义的布局,作为显示的内容 Context context = null;  // 真实环境中要赋值 int layoutId..., true); popupWindow.setTouchable(true); // 如果不设置PopupWindow的背景,有些版本就会出现一个问题:无论是点击外部区域还是Back键都无法dismiss...(contentView); 如果创建PopupWindow的时候没有指定高宽,那么showAsDropDown默认只会向下弹出显示,这种情况有个最明显的缺点就是:弹窗口可能被屏幕截断,显示不全,所以需要使用到另外一个方法...如下图所示,我们可以根据屏幕左上角的坐标A,屏幕高宽,点击View的左上角的坐标C,点击View的大小以及PopupWindow布局的大小计算出PopupWindow的显示位置B ?...PopupWindow。

    3.3K110
    领券