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
相关推荐
MSTcheng.1 小时前
【C++】C++异常
java·数据库·c++·异常
草莓熊Lotso2 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
大模型玩家七七2 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
恋猫de小郭2 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
寻星探路7 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
工程师老罗9 小时前
如何在Android工程中配置NDK版本
android
曹牧10 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法10 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty72511 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai