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
相关推荐
叫致寒吧9 小时前
Tomcat详解
java·tomcat
踢球的打工仔11 小时前
PHP面向对象(7)
android·开发语言·php
安卓理事人12 小时前
安卓socket
android
S***267513 小时前
基于SpringBoot和Leaflet的行政区划地图掩膜效果实战
java·spring boot·后端
马剑威(威哥爱编程)14 小时前
鸿蒙6开发视频播放器的屏幕方向适配问题
java·音视频·harmonyos
JIngJaneIL14 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·社区互助
V***u45314 小时前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
这是程序猿15 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
i***t91915 小时前
基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
java·spring boot·spring
k***082915 小时前
【监控】spring actuator源码速读
java·spring boot·spring