gpt4 book ai didi

android - getHeight() 未返回正确的值 - 使用 ViewTreeObserver- 在第一次运行时

转载 作者:行者123 更新时间:2023-11-29 16:29:28 25 4
gpt4 key购买 nike

MainActivity您单击相机按钮,拍照,然后图像显示在 PreviewActivity 上然后我应该得到 imageView 的宽度和高度.

我试图显示一个 log当我触摸屏幕时显示高度值的消息现在高度值已更正;所以我认为问题是 imageView可能一开始并没有布置。 “它在一切都正确放置之前获得了高度值..”,即使我使用的是 getViewTreeObserver() .

    ViewTreeObserver viewTreeObserver = mImageView.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mImageView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
setImage(mCurrentPhotoPath, selectedImageUri);
}
});
}

编辑:我发现问题是高度值比实际高;因为当打开相机应用时,statusBar 被隐藏,它会再次显示在 PreviewActivity 上, 但 imageView 的高度是在 statusBar 再次备份之前测量的,这导致问题并导致 Height 更高。

最佳答案

您可以尝试在 post 方法中获取宽度,例如:

mImageView.post(new Runnable(){

@Override
public void run() {
mHeight = mImageView.getHeight(); //height is ready
}
});

据我所知,post中的可运行任务将在 View 的测量和布局之后执行。

关于android - getHeight() 未返回正确的值 - 使用 ViewTreeObserver- 在第一次运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57537709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com