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

更改LayoutParams后getLocationInWindow未更改

是因为LayoutParams只是用来描述View在布局中的位置和大小的参数,并不会直接影响View在窗口中的位置。而getLocationInWindow方法是用来获取View在窗口中的坐标位置的方法。

当我们更改LayoutParams后,需要调用View的requestLayout方法来触发重新布局,使得LayoutParams的改变生效。在重新布局完成后,再调用getLocationInWindow方法才能获取到更新后的坐标位置。

另外,需要注意的是,getLocationInWindow方法返回的是View在窗口中的绝对坐标位置,而不是相对于父容器的坐标位置。如果需要获取相对于父容器的坐标位置,可以使用getLocationOnScreen方法。

对于这个问题,可以尝试以下步骤来解决:

  1. 确保在更改LayoutParams后,调用了View的requestLayout方法,触发重新布局。
  2. 在重新布局完成后,再调用getLocationInWindow方法来获取更新后的坐标位置。
  3. 如果仍然无法获取到更新后的坐标位置,可以尝试使用其他方法来获取View的位置信息,比如getLeft和getTop方法。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(ECS):提供弹性计算能力,满足各类业务需求。详情请参考:https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):提供稳定可靠的云数据库服务,支持高可用、备份恢复等功能。详情请参考:https://cloud.tencent.com/product/cdb
  • 人工智能平台(AI Lab):提供丰富的人工智能算法和模型,支持图像识别、语音识别、自然语言处理等应用场景。详情请参考:https://cloud.tencent.com/product/ai
  • 物联网套件(IoT Hub):提供物联网设备接入、数据采集、设备管理等功能,帮助构建物联网应用。详情请参考:https://cloud.tencent.com/product/iothub
  • 移动推送(信鸽):提供消息推送服务,支持多种推送方式和个性化推送策略。详情请参考:https://cloud.tencent.com/product/tpns
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现

    状态栏与导航栏属于SystemUi的管理范畴,虽然界面的UI会受到SystemUi的影响,但是,APP并没有直接绘制SystemUI的权限与必要。APP端之所以能够更改状态栏的颜色、导航栏的颜色,其实还是操作自己的View更改UI。可以这么理解:状态栏与导航栏拥有自己独立的窗口,而且这两个窗口的优先级较高,会悬浮在所有窗口之上,可以把系统自身的状态栏与导航栏看做全透明的,之所有会有背景颜色,是因为下层显示界面在被覆盖的区域添加了颜色,之后,通过SurfaceFlinger的图层混合,好像是状态栏、导航栏自身有了背景色。看一下一个普通的Activity展示的时候,所对应的Surface(或者说Window也可以)。

    04
    领券