Android:Как предотвратить масштабирование изображения в ImageView или ImageButton?

StackOverflow https://stackoverflow.com/questions/2406172

Вопрос

Как я могу предотвратить автоматическое масштабирование моего растрового изображения в ImageView или ImageButton, если вид или кнопка растягиваются с помощью "fill_parent" или с помощью "weight"?

Это будет полезно, например, для создания 4-кнопочной панели инструментов в верхней части экрана, где кнопки расположены на равном расстоянии друг от друга, но изображения внутри кнопок продолжают растягиваться, даже если я использую scaleType ="center", что должно предотвращать масштабирование в соответствии с документом, но это не так.

Любая информация приветствуется!

Спасибо,

Это было полезно?

Решение

Я обнаружил, что при использовании android: background автоматически масштабирует изображение, которое вы там используете, до размера вида.

Я попытался использовать android: src, чтобы поместить изображение в представление.Изображение не масштабировалось, но я не смог расположить изображение по центру относительно размера вида.

Итак, я попытался создать для всей кнопки ее собственный относительный макет, и это то, что я использовал:

<RelativeLayout android:id="@+id/RelativeLayout01" 
                android:layout_height="fill_parent" 
                android:layout_width="fill_parent">
                <ImageButton android:id="@+id/ImageButton01"    
                             android:layout_height="fill_parent"
                             android:layout_width="fill_parent"></ImageButton>
                <ImageView android:id="@+id/ImageView01"
                           android:layout_width="wrap_content"
                           android:layout_height="wrap_content" 
                           android:background="@drawable/cardback1" 
                           android:layout_centerInParent="true"></ImageView>
</RelativeLayout>

Кнопка ImageButton находится в фоновом режиме и всегда будет того же размера, что и макет.Однако ImageView всегда будет оставаться центрированным в RelativeLayout и не будет масштабироваться.Таким образом, сам RelativeLayout может расти и перемещаться, а изображение поверх кнопки всегда будет оставаться того же размера, но кнопка будет увеличиваться.Однако изображение уменьшится, если Макет станет меньше самого изображения.

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

Другие советы

Просто измените свой объект рисования, примените увеличенный прозрачный фон.Допустим, мой рисунок в формате hdpi равен значку 41 * 48 пикселей.png .Я создал новое изображение размером 60 * 60 пикселей с прозрачным фоном, скопировал-вставил предыдущую иконку в формате png и сохранил под тем же именем.Таким образом , вам не нужно прикасаться к своим макетам .

Затем вы можете увеличить зону кнопки, если примените непрозрачный android: предыстория:

<ImageButton android:id="@+id/widget_open"
android:src="@drawable/icon_widget_arrow_up"
android:background="#ff777777"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageButton>

Примените предыдущий и новый чертеж к android:src , вы должны четко видеть область ImageButton.

Кстати, я запускаю приложение в режиме совместимости.

Если изображение масштабировано, убедитесь, что вы не запускаете свое приложение в режиме совместимости (например, если вы ориентированы на Android 1.5 / 1.6 без поддержки нескольких плотностей и запускаете приложение на Android 2.0).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top