Подтвердить что ты не робот

ImageПросмотрите одно измерение, чтобы оно соответствовало свободному пространству, а затем оцените, чтобы сохранить аспектный рацион

Мне нужно что-то вроде <img width="100%" /> для Android <ImageView>. Я имею в виду масштабирование ширины до всего доступного пространства (сокращение или увеличение ширины изображения) и автоматическое изменение высоты, чтобы сохранить соотношение сторон.

Something like <ImageView android:layout_width="match_parent" android:layout_height="auto">

Использовать android:scaleType="fitCenter" делать с изображением то, что я хочу, но только с изображением, не изменяет высоту самого представления. Когда я устанавливаю размеры кабины в match_parent, я получу то, что хочу, но только если у меня есть только одно изображение на экране. Но мне нужны тексты под изображением.

Это единственный способ создать дочерний элемент ImageView? Например android:adjustViewBounds="true" ничего не делает для меня.

4b9b3361

Ответ 1

Я нашел, где проблема. По умолчанию реализация ImageView не может увеличить изображение. Если изображение больше ширины экрана и Android: adjustViewBounds = "true" работает правильно и регулирует высоту, чтобы сохранить пропорции изображения. Но если изображение меньше ширины экрана, оно не масштабируется.

Это причина этого кода

if (newHeight <= heightSize) {
    heightSize = newHeight;
} 

в классе ImageView (строка 688, API 10)

Я сделал особый ребенок ImageView, который позволяет увеличить изображение, чтобы оно соответствовало ширине.

Вот: https://gist.github.com/tprochazka/5486822