测量ImageView高度

时间:2019-05-16 16:30:43

标签: android android-recyclerview android-view android-glide

我需要测量recyclerview中一行的高度。我已经阅读了很多内部解决方案,但是它们对我不起作用。我正在通过Glide库将图像加载到imageView中。 imageView的宽度固定为MATCH_PARENT,而高度设置为WRAP_CONTENT。从网上加载资源后,我需要知道确切的高度。我尝试了以下方法:

@Override
public void onBindViewHolder(@NonNull PostsAdapter.ViewHolder viewHolder, int position) {

Glide.with(context)
        .load(post.getImageUrl())
        .addListener(new RequestListener<Drawable>() {

            [...]

            @Override
            public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {

                viewHolder.imageViewPost.measure(View.MeasureSpec.makeMeasureSpec(recyclerView.getWidth(), View.MeasureSpec.EXACTLY),
                        View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

                Log.d(TAG, "Height: " + viewHolder.imageViewPost.getMeasuredHeight());

                return false;
            }
        })
        .into(viewHolder.imageViewPost);
}

控制台上打印的高度始终为0 ...知道吗?预先非常感谢。

我也尝试过:

viewHolder.imageViewPost.postDelayed(() -> {
    Log.d(TAG, "Height: " + viewHolder.imageViewPost.getMeasuredHeight());
}, 2000);

这只是在延迟2000的情况下才给出一些一致的值,但是在我看来,这似乎很棘手...还有其他选择吗?

0 个答案:

没有答案