Почему wrap_content в imageview не делает его намного больше в зависимости от фактической ширины? - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть ImageView, который имеет:

android:layout_height="100dp"   
android:layout_width="wrap_content"
android:scaleType="fitCenter" 
android:adjustViewBounds="true"   

То, что я вижу, это то, что если я установлю изображение, которое имеет размеры (на основе информации моего компьютера) 1280px854
Если я открою его на моем компьютере, изображение будет огромным.
Это же изображение будет маленьким в моем ImageView, хотя я установил wrap_content.
Я не уверен, что понял, как это работает.Например, 1280/4 = 320dpi (xxxhdpi), но для с wrap_content вид изображения не имеет ширины 320dpi
Чтобы уточнить: я пытаюсь понять, почему это так работает, и не делает его больше с wrap_content.

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

Во-первых, давайте поговорим о соотношении вашего изображения. Он имеет ширину 1280 пикселей и высоту 854 пикселя, следовательно, его пропорция составляет 1280/854 ≈ 3/2 .

Во-вторых, вы установили высоту ImageView на 100dp. Если ширина не указана, то Android будет стараться изо всех сил воспринимать соотношение (3/2) и вычислит ширину:

ratio = width/height
3/2 = width/100
width = 150dp

Обратите внимание, что это дало нам dp, если мы вместо этого подключим px (для высоты), это вернет нам px.

В-третьих, теперь, когда у нас есть размер изображения (150dp x 100dp) и width='wrap_content' ширина imageView будет соответствовать 150dp

0 голосов
/ 13 апреля 2019

Этот атрибут:

android:scaleType="fitCenter"

означает, что исходное соотношение сторон изображения будет сохранено.Вы хотите подогнать это изображение к ImageView с:

android:layout_height="100dp"

, поэтому, поскольку вы ограничиваете высоту изображения, если оно больше 100dp, оно будет уменьшаться до этой высоты, а его ширина будет уменьшаться пропорционально,

0 голосов
/ 13 апреля 2019

Решение состоит в том, чтобы установить android:layout_height="wrap_content", поскольку значение 100dp в layout_height ограничивало "рост" ширины изображения.

...