Я пытаюсь подобрать образ внутри ImageButton
для тестирования, но способ ImageButton
ведет себя не так, как ожидалось.
я сделал изображение 988x89 пикселей PNG и разместил его внутри ImageButton
, который находится в пикселях с 7inches 1024x600. экран. ImageButton
988dp x 89dp, я знаю, что dp не совпадает с пикселями, но для этого разрешения я ожидал, что изображение будет достаточно масштабировать, чтобы занять большую часть ImageButton
. Также я изменился на px вместо dp для тестирования, и это не имело никакого значения.
Но вместо этого ImageButton
сделал изображение внутри него ОЧЕНЬ маленьким (синие линии являются границами ImageButton
, а зеленая линия - индикацией выравнивания по центру).
so question # 1: Почему ImageButton
делает изображение таким большим, как это настолько мало, когда оно может заполнить большую часть экрана, даже если размер ImageButton
очень широк?
Итак, чтобы преодолеть это, я выбрал adjustViewBounds
, который ничем не отличался, что ставит вопрос №2: Почему? Не следует ли настраивать границы представления для настройки границ обзора?
Код до сих пор:
<ImageButton
android:layout_width="988dp"
android:layout_height="89dp"
android:id="@+id/ibTest"
android:src="@drawable/image_top_test"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
android:cropToPadding="false"
android:layout_below="@+id/hlTopBar"
android:background="#00000000" />
Поэтому позже я изменил scaleType
на fitCenter
, и изображение стало:
Что странно и для меня, так как ImageButton
имеет такое же соотношение сторон, как и изображение, поэтому я ожидал бы, что он будет соответствовать 100%, но он не подходит (есть разрыв в ширине с обеих сторон изображения).
Поэтому позже я изменил scaleType
на fitXY
, и я получил свой окончательный результат:
Кажется, что это ожидаемое изображение (сравнение изображения fitXY
с изображением fitCenter
в Photoshop показывает, что изображение fitCenter
слегка овальное, но здесь его невозможно показать, что ожидается, так как ширина не соответствует изображению по высоте).
Итак, мой общий вопрос: (# 3): Какой правильный способ для установки изображения в Android, и ожидать, что он будет иметь обычный размер на экране, и почему масштабирование настолько грязное, и я это неправильно?
Я знаю, что есть проблемы с размерами экрана и dp и т.д., но масштабирование не ведет себя контролируемым образом, fitCenter
делает овальное изображение, а fitXY
слишком сильно зависит от меня, устанавливая соотношение правильного изображения на XY, поэтому я задаюсь вопросом, не делаю ли я что-то неправильно и как он должен быть правильным.
Окончательный код XML:
<ImageButton
android:layout_width="988dp"
android:layout_height="89dp"
android:id="@+id/ibTest"
android:src="@drawable/image_top_test"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
android:cropToPadding="false"
android:layout_below="@+id/hlTopBar"
android:background="#00000000"
android:scaleType="fitXY" />