ImageView одно измерение, чтобы соответствовать свободному пространству, а второе оценить, чтобы сохранить соотношение сторон - PullRequest
14 голосов
/ 01 июня 2011

Мне нужно что-то вроде <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" ничего не делает для меня.

1 Ответ

18 голосов
/ 06 июня 2011

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

Это вызвано этим кодом

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

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

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

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

...