在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
}
});
据我所知,后期的可运行任务将在视图的尺寸和布局之后执行。