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
相关推荐
MeAT ITEM1 分钟前
net.sf.jsqlparser.statement.select.Select.getSelectBody()
java
我是无敌小恐龙4 分钟前
Java SE 零基础入门 Day02 运算符与流程控制超详细笔记
java·数据结构·spring boot·笔记·python·spring·spring cloud
invicinble6 分钟前
对于代码阅读能力的思考和总结
java
jrlong6 分钟前
HelloAgents 进阶篇 task03
java·前端·python
talen_hx29611 分钟前
飞书机器人发文本消息
java·前端·飞书
2601_9498165813 分钟前
Spring Boot--@PathVariable、@RequestParam、@RequestBody
java·spring boot·后端
沐风。5618 分钟前
python
java·服务器·python
千里马学框架19 分钟前
Android Automotive CarService 和 CarManager 源码剖析
android·车载系统·framework·系统开发·car framework
zmsofts21 分钟前
java面试必问14:MySQL 索引类型:从基础到优化,面试官给你点赞
java·mysql·面试
helx8224 分钟前
spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter
java