Android 开发问题:getLeft、getRight、getTop、getBottom 方法返回的值都为 0

java 复制代码
View vBlock = findViewById(R.id.v_block);

Log.i(TAG, "vBlock left: " + vBlock.getLeft());
Log.i(TAG, "vBlock right: " + vBlock.getRight());
Log.i(TAG, "vBlock top: " + vBlock.getTop());
Log.i(TAG, "vBlock bottom: " + vBlock.getBottom());
复制代码
# 输出结果

vBlock left: 0
vBlock right: 0
vBlock top: 0
vBlock bottom: 0
  • 在 Android 开发中,上述代码中,getLeft、getRight、getTop、getBottom 方法返回的值都为 0
问题原因
  1. getLeft、getRight、getTop、getBottom 方法返回的是视图相对于其父容器的位置坐标

  2. 在 onCreate 或过早的阶段调用这些方法时,视图尚未完成测量和布局流程,因此坐标值尚未计算,默认返回 0

处理策略
  1. View.post 中打印坐标,确保视图已完成布局
java 复制代码
View vBlock = findViewById(R.id.v_block);

vBlock.post(() -> {
    Log.i(TAG, "vBlock left: " + vBlock.getLeft());
    Log.i(TAG, "vBlock right: " + vBlock.getRight());
    Log.i(TAG, "vBlock top: " + vBlock.getTop());
    Log.i(TAG, "vBlock bottom: " + vBlock.getBottom());
});
复制代码
# 输出结果

vBlock left: 0
vBlock right: 200
vBlock top: 49
vBlock bottom: 249
  1. 或者,在 onWindowFocusChanged 中打印坐标,确保视图已完成布局
java 复制代码
@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    View vBlock = findViewById(R.id.v_block);

    Log.i(TAG, "vBlock left: " + vBlock.getLeft());
    Log.i(TAG, "vBlock right: " + vBlock.getRight());
    Log.i(TAG, "vBlock top: " + vBlock.getTop());
    Log.i(TAG, "vBlock bottom: " + vBlock.getBottom());
}
复制代码
# 输出结果

vBlock left: 0
vBlock right: 200
vBlock top: 49
vBlock bottom: 249
相关推荐
元Y亨H8 小时前
Nacos - 服务发现
java·微服务
微露清风8 小时前
系统性学习C++-第十八讲-封装红黑树实现myset与mymap
java·c++·学习
dasi02278 小时前
Java趣闻
java
&岁月不待人&9 小时前
⏺ Android 录屏缩放异常排查:Pixel 3 XL 上的完美风暴
android
a3158238069 小时前
Android 大图显示策略优化显示(一)
android·算法·图片加载·大图片
tangweiguo030519879 小时前
从零开始:在 Windows 上使用命令行编译 Android .so 动态库(NDK + CMake + Ninja)
android
阿波罗尼亚9 小时前
Tcp SSE Utils
android·java·tcp/ip
susu10830189119 小时前
springboot3.5.8整合minio8.5.9
java·springboot
不知道累,只知道类9 小时前
深入理解 Java 虚拟线程 (Project Loom)
java·开发语言
myzshare10 小时前
实战分享:我是如何用SSM框架开发出一个完整项目的
java·mysql·spring cloud·微信小程序