Что-то не так. Ваш ImageView определен с wrap_content
для его layout_width
и layout_height
в XML, поэтому он всегда должен занимать только то же пространство, что и ваше растровое изображение.
Попробуйте добавить android:background
для вашего ImageView, чтобы увидеть, что оно действительно шире вашего растрового изображения и вызвало нежелательное центрирование:
<ImageView android:id="@+id/someImage"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textName"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingRight="4dp"
android:background="#F00"
/>
Протестируйте его с помощью некоторых растровых изображений с прозрачным фоновым цветом, чтобы мы могли видеть красный фон из ImageView. Я ожидаю, что он покажет высокий прямоугольник, если ваше исходное растровое изображение высокое, и широкий прямоугольник, если растровое изображение широкое. Вы увидите квадрат только в том случае, если ваше исходное растровое изображение является квадратным. Мы никогда не должны видеть случай с рис. 1 из вашего вопроса.
Может быть, вы хотели, чтобы ваш ImageView всегда всегда имел размер 100x100? Затем вы можете использовать следующий код (обратите внимание на fitStart
для атрибута scaleType
, как уже правильно упоминали другие):
<ImageView android:id="@+id/someImage"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textName"
android:layout_width="100dp"
android:layout_height="100dp"
android:paddingRight="4dp"
android:background="#F00"
android:scaleType="fitStart"
/>
Нет необходимости устанавливать maxHeight
, maxWidth
и adjustViewBounds
из кода Java, если это то, что вам нужно.