首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当未指定大小时,PopupWindow超出屏幕

当未指定大小时,PopupWindow可能会超出屏幕范围,导致用户无法看到完整的内容。为了解决这个问题,可以使用以下方法来确保PopupWindow在屏幕内显示:

  1. 设置PopupWindow的宽度和高度:

在创建PopupWindow时,可以使用setWidth()setHeight()方法来设置其大小。例如:

代码语言:java
复制
PopupWindow popupWindow = new PopupWindow(context);
popupWindow.setWidth(300);
popupWindow.setHeight(400);
  1. 设置PopupWindow的宽度和高度为WRAP_CONTENT:

如果希望PopupWindow的大小根据其内容自动调整,可以将其宽度和高度设置为ViewGroup.LayoutParams.WRAP_CONTENT。例如:

代码语言:java
复制
PopupWindow popupWindow = new PopupWindow(context);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
  1. 设置PopupWindow的显示位置:

可以使用showAsDropDown()showAtLocation()方法来设置PopupWindow的显示位置。showAsDropDown()方法会自动将PopupWindow显示在指定视图的下方,而showAtLocation()方法则可以更灵活地控制PopupWindow的显示位置。例如:

代码语言:java
复制
// 显示在指定视图的下方
popupWindow.showAsDropDown(anchorView);

// 显示在屏幕的指定位置
popupWindow.showAtLocation(anchorView, Gravity.CENTER, 0, 0);
  1. 监听PopupWindow的显示位置:

可以使用setOnDismissListener()方法来监听PopupWindow的关闭事件,并在此时检查其显示位置是否超出屏幕范围。如果超出屏幕范围,可以将其重新定位到屏幕内的位置。例如:

代码语言:java
复制
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
    @Override
    public void onDismiss() {
        // 检查并调整PopupWindow的显示位置
    }
});

通过以上方法,可以确保PopupWindow在未指定大小时不会超出屏幕范围。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 屏幕20%能打字,半小时充电可管一整天

    今年发布的Apple Watch主要有三项改进,最引人注目的是屏幕的加大,除此之外,还增加了屏幕键盘和快速充电功能,尤其是快速充电,这是一项非常需要的功能,以前一直没有加入。...GPS版 22小时20分钟 22小时55分钟 是 否 45mm GPS版 26小时35分钟 27小时38分钟 是 否 测试显示,开启勿扰模式时,可以极大地延长Apple Watch的电池续航。...Apple Watch Series 7 的另一亮点是快速充电。 多年来,Apple Watch的充电速度一直太慢,此次苹果大大改进了充电问题。...简而言之,就健康功能而言,它远远超出了竞争对手。...1毫米的外壳尺寸差异似乎只是一个微小的差异,但在使用中却足够明显,因为它比Apple Watch Series 620%,也为苹果手表一些新体验铺平了道路。

    2.1K20

    Android从屏幕底部弹出popupWindow

    Android从屏幕底部弹出popupWindow 先看一下效果,看看是不是你想要的效果,免得浪费大家的时间,有一点说明,由于我录制的 gif 是用的模拟器,所以没有屏幕变暗的效果和加速的弹起的效果,实际效果以真机测试为准...,然后将屏幕的亮度变暗,让popupwindow获取焦点,就可以实现了popupwindow从手机屏幕底部弹出的效果,代码中注释已经写的很清楚了,直接看代码即可 2.1设置触发popupwindow的点击事件...(new BitmapDrawable()); popupWindow.setFocusable(true); // 设置点击popupwindow屏幕其它地方消失...popupWindow.setOutsideTouchable(true); // 平移动画相对于手机屏幕的底部开始,X轴不变,Y轴从1变0...} // 设置popupWindow的显示位置,此处是在手机屏幕底部且水平居中的位置 popupWindow.showAtLocation(SettingActivity.this.findViewById

    3.5K30

    Android N上Popwindow显示位置不正确问题「建议收藏」

    Popwindow是Android应用开发过程中比较常用的一个组件,最近发现了在Android N(Android 7.0,7.1)上Popwindow的一个位置显示问题,指定PopupWindow高度为...MATCH_PARENT时使用showAsDropDown或者是showAtLocation来显示Popwindow,Popwindow总是顶到了屏幕顶部,而不是在设置的指定控件下方显示,而在Android...mPopupWindow.showAsDropDown(mBtn); Android 6.0及以下系统上正常显示(在指定的控件的下发显示): Android N(7.0)以及 上显示不正常不论怎么设置总是顶到屏幕顶部...可以通过如下方法来解决: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { // Android 7.x中,PopupWindow高度为match_parent...= DisplayUtil.getScreenHeight(MainActivity.this); // 获取屏幕高度 mPopupWindow.setHeight

    1.7K20

    PopupWindow使用方法详解

    学习了Android PopupWindow的使用技巧 和【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻底部弹出菜单,然后自己进行了一下研究,写一个总结...设置非PopupWindow区域是否可触摸 // 1.若设置PopupWindow获得焦点和非PopupWindow区域可触摸,但实际上非PopupWindow区域的控件并不能响应点击事件等等 // 2....若设置PopupWindow不可获得焦点,则不管非PopupWindow区域被设置能否触摸,实际上非PopupWindow区域的控件都能响应点击事件等等 // 3.若设置PopupWindow不可获得焦点...,非PopupWindow区域被设置能触摸,点击非PopupWindow区域时能隐藏PopupWindow,而点击返回键并不能隐藏窗口, // 此时通过按钮只能控制窗口的弹出,并不能控制消失,消失只能通过点击其他非...,不管非PopupWindow区域被设置能否触摸,也会在点击屏幕PopupWindow区域和点击返回键时,使PopupWindow隐藏 // 2.相反,如果设置为不可获得焦点,在点击屏幕PopupWindow

    69431

    Android项目实战(十七):QQ空间实现(二)—— 分享功能 弹出PopupWindow

    分析: 1、点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2、该区域出现的时候,详情界面便灰了,也说成透明度变化了 3、任意选了一个按钮或者点击了该区域以外的部分...* 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) {...relativeLayout, Gravity.BOTTOM| Gravity.CENTER_HORIZONTAL, 0, 0); // popupWindow...出现的时候 屏幕的透明度 ,设为0.5 即半透明 灰色效果 backgroundAlpha(0.5f); // 设置popupWindow...取消的点击事件,即popupWindow消失后,屏幕的透明度,全透明,就回复原状态 feedSelectPopupWindow.setOnDismissListener(

    1.1K60

    高仿微信聊天界面长按弹框样式

    关键代码解剖 PopupWindow默认宽高设置 我们知道,创建PopupWindow时可以指定显示的宽度和高度。 这边说下代码里面默认的宽高是如何设置的。 默认宽度=设备的宽度/3。...如果设置过大,可能显示列表会撑满整个屏幕。 基于此,这边代码设置的默认高度是动态变化的。 变化算法如下: 最大默认高度=设备的高度/2。 列表高度=Item高度*Item数目。...为了说明该PopupWindow适应各个位置,所以效果图里面有三个按钮,分别位于左下角,中间,右上角。 X坐标位置确定 由上图我们可以得出结论。...显示的View在左边时,显示的X坐标=View的中心点X坐标。 显示的View在右边时,显示的X坐标=View的中心点X坐标-PopupWindow宽度。...显示的View在上边时,显示的Y坐标=View的中心点Y坐标。 显示的View在下边时,显示的Y坐标=View的中心点Y坐标-PopupWindow高度。

    1.2K10

    Android技能树 — PopupWindow小结

    主要分为三部分: PopupWindow的使用 PopupWindow工具类的封装 PopupWindow源码分析 正文 我们知道上来直接给一串的源码,很少有人会继续看下去,所以我们就自己先写个下拉选择框...1.1 实例化PopupWindow对象 既然实例化PopupWindow对象,所以我们看下它的构造函数: public PopupWindow() { this(null, 0, 0); }...显示在这个控件的下方;而showAtLocation是相对于屏幕,可以通过设置Gravity来指定PopupWindow显示在屏幕的那个位置。...我们再来看showAtLocation: 因为这个方法是PopupWindow的显示相对于屏幕,所以传入的View也是只要这个屏幕的就可以,因为这个View的传入也只是为了拿到Window Token。...因为第一次点击前,PopupWindow还没出现在屏幕过,所以也没有被绘制出来过,宽度当然也获取不到准确值了。出现过一次后,第二次点击就能正确获取了。

    1.4K11

    Android技能树 — PopupWindow小结

    主要分为三部分: PopupWindow的使用 PopupWindow工具类的封装 PopupWindow源码分析 正文 我们知道上来直接给一串的源码,很少有人会继续看下去,所以我们就自己先写个下拉选择框...1.1 实例化PopupWindow对象 既然实例化PopupWindow对象,所以我们看下它的构造函数: public PopupWindow() { this(null, 0, 0); }...显示在这个控件的下方;而showAtLocation是相对于屏幕,可以通过设置Gravity来指定PopupWindow显示在屏幕的那个位置。...我们再来看showAtLocation: 因为这个方法是PopupWindow的显示相对于屏幕,所以传入的View也是只要这个屏幕的就可以,因为这个View的传入也只是为了拿到Window Token。...因为第一次点击前,PopupWindow还没出现在屏幕过,所以也没有被绘制出来过,宽度当然也获取不到准确值了。出现过一次后,第二次点击就能正确获取了。

    28610

    Android解析WindowManager(二)Window的属性

    2.Window的类型和显示次序 Window的类型有很多种,比如应用程序窗口、系统错误窗口、输入法窗口、PopupWindow、Toast、Dialog等等。...的静态内部类LayoutParams中,接下来我们分别对这三类进行讲解。...子窗口 子窗口,顾名思义,它不能独立的存在,需要附着在其他窗口才可以,PopupWindow就属于子窗口。子窗口的类型定义如下所示: ? 子窗口的Type值范围为1000到1999。...窗口显示次序 一个进程向WMS申请一个窗口时,WMS会为窗口确定显示次序。...为了方便窗口显示次序的管理,手机屏幕可以虚拟的用X、Y、Z轴来表示,其中Z轴垂直于屏幕,从屏幕内指向屏幕外,这样确定窗口显示次序也就是确定窗口在Z轴上的次序,这个次序称为Z-Oder。

    1.1K80

    仿uc下部弹出菜单

    就下下来看,结果不符合要求,当时这个菜单由另一个同事在做代码,组长叫我和他考虑界面实现的可行性,我提出这种思路给他,他不采纳,觉得太烦了,他就自己弄,因为我们的项目是车载导航上的一个主控程序上的菜单,屏幕分辨率固定...思路说完了,看下实现的方法把,就是以一个bitmap为画布,把另一个绘制到上面就行,这是我的方法,不知道还有没其他的方法,望能给个更好的方法。...arrayOfRect[2].left;               arrayOfRect[2].bottom = this.popupWindowHeight; 其中parentLeft为button的距离屏幕左边距的距离...,也就是getLeft方法得到的数值,parentWidth就是按钮本身的宽度了,screenwidth 是屏幕宽度,popupWindowHeight为popupWindow的高度,具体你们看图和源码...popupWindow.setFocusable(true);                 popupWindow.setOutsideTouchable(true);

    1.5K80

    android仿京东商品属性筛选功能

    点击筛选按钮会弹出一个自己封装好的popupWindow,实用方法非常简单;两行代码直接显示;(当然初始化数据除外) 这里和以前用到的流式布局有些不一样:流式布局 以前使用的是单个分类,而且也没有在项目中大量实用...;这个筛选功能除了数据外几乎都是从项目中Copy出来的; 整个popupWindow布局就是一个自定义的ListView,这个自定义的listview主要是控制listview的高度; 如果数据少的话就是自适应...,如果数据多了就限制高度为屏幕的一半; 自定义的ListView: public class CustomHeightListView extends ListView { private...); DisplayMetrics d = new DisplayMetrics(); display.getMetrics(d); //设置控件高度不能超过屏幕高度一半...flowPopWindow = new FlowPopWindow(MainActivity.this, dictList); flowPopWindow.showAsDropDown(ivBack); 点击确定的时候直接设置一个监听即可

    1.4K10

    Android底部弹窗的实现示例代码

    收获早知道 阅读完本文后,你可以有以下收获 利用PopupWindow实现底部弹窗 PopupWindow实现底部弹窗时的缺点 解决利用PopupWindow实现底部弹窗,无法覆盖状态栏的问题 利用dialog...直接进入主题,按照套路,一步步实现利用PopupWindow实现底部弹窗。首先,写一个布局文件作为PopupWindow中的内容,布局文件如下 <?...由于,我们要将mPopWindow放在整个屏幕的最低部,所以我们将R.layout.activity_main做为它的父容器,将其显示在BOTTOM的位置。...(Build.VERSION.SDK_INT = Build.VERSION_CODES.LOLLIPOP) { try { //利用反射重新设置mLayoutInScreen的值,mLayoutInScreen.../弹出窗口的宽高,DisplayHelper.getScreenWidth(getContext());和DisplayHelper.getScreenHeight(getContext());是拿到屏幕的宽高

    4.3K31
    领券