Как динамически создавать ImageViews, сохраняя соотношение сторон - PullRequest
0 голосов
/ 26 сентября 2018

Так что у меня возникли проблемы с приложением для создания текстовых сообщений, которое я создаю, моя главная проблема в том, что мне нужно динамически создавать ImageViews, которые я позже добавляю в линейный макет и, в конечном итоге, в RecyclerView, такой как So.

final ImageView imageView = new ImageView(holder.mView.getContext());
imageView.setAdjustViewBounds(true);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(total_width, total_height);
imageView.setLayoutParams(lp);
holder.message_layout_2.addView(imageView);

Итак, я хочу, чтобы изображение было уменьшено, если оно больше, чем total_width или total_height (например, 1080, 2160).Но .setMaxHeight () не работает при использовании параметров макета.Таким образом, представление recylcer будет иметь тонну пустого пространства между следующей моделью, или изображение будет вытягиваться за пределы текущей активности.

Есть ли метод, отличный от .setMaxHeight () /. SetMaxWidth (), чтобы это работало?Я пытался просто попытаться сделать математику вручную, но трудно сохранить правильное соотношение изображения, так как мои максимальная ширина и высота не совпадают!Я бы не хотел, чтобы максимальная высота и ширина были одинаковыми, чтобы изображение могло соответствовать ему как можно большему (около половины общей ширины и высоты упражнения).

Извините, мне не хватает представителя, чтобы опубликовать скриншот.Но я думаю, что в основном моя математика терпит неудачу, когда изображение достигает максимальной ширины и высоты, которые я установил, если кто-нибудь знает правильную формулу или метод, чтобы сделать это, что было бы здорово.

Кроме того, в качестве примечания я не могу использовать wrap_content или что-то подобное для просмотра изображений, потому что я хочу, чтобы просмотрщик-переработчик знал размер изображения до его загрузки, чтобы избежать появления других видов при загрузке изображения. (Я делаю это, сохраняя информацию о размере изображения в модели сообщения, чтобы он мог определить размер до загрузки изображения)

...