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
    }
});


据我所知,后期的可运行任务将在视图的尺寸和布局之后执行。

09-25 22:59