我需要测量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的情况下才给出一些一致的值,但是在我看来,这似乎很棘手...还有其他选择吗?