Мне нужно измерить высоту строки внутри просмотра переработчика. Я прочитал много решений внутри SO, но они не работают для меня. Я загружаю изображение в imageView через библиотеку Glide. Ширина 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 года, но, на мой взгляд, это довольно странно ... любая альтернатива?