Размер растрового изображения Android в XML
В моем XML файле я использую растровое изображение в качестве следующего
<bitmap
android:src="@drawable/Icon"
android:gravity="center"/>
Здесь ширина изображения значка превышает экран.
Я попробовал Android: width = "100dp" и все. Но это не работает.
Полный файл XML:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle">
<stroke android:width="3dp" android:color="@color/black" />
<solid android:color="@color/bg_green" />
</shape>
</item>
<item>
<bitmap
android:src="@drawable/Icon"
android:gravity="center"/>
</item>
</layer-list>
Как я могу уменьшить ширину и высоту вышеупомянутого растрового изображения?
Ответы
Ответ 1
Из Android-разработчики Я увидел, что для Bitmap XML нет тега, который позволяет вам изменять его размер. Вам нужно сделать это через некоторые графические приложения, такие как GIMP. Как уже сказал @Kevin Cooper, в идеале вам нужно создавать разные наборы ресурсов (разных размеров) для разных типов экранов.
Но вы можете изменить его размер с помощью атрибутов width и height в ImageView
вместо создания растрового изображения с разным размером:
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="center"
android:src="@drawable/Icon" />
Если вы хотите повторно использовать это изображение в других местах, вы можете создать отдельный стиль и повторно использовать его:
// in styles.xml
<style name="Icon24x24">
<item name="android:src">@drawable/Icon</item>
<item name="android:gravity">center</item>
<item name="android:layout_width">24dp</item>
<item name="android:layout_height">24dp</item>
</style>
// in layout.xml
<ImageView style="@style/Icon24x24"/>
Другим способом повторного использования может быть создание отдельного файла макета для одного ImageView
, а затем включение в другие макеты.
Если вы хотите использовать этот bitmap
внутри списка слоев, см. ответ @Kevin Cooper, поскольку он предположил, что можно добавить paddings в layer list item
:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="20dp"
android:right="20dp">
<bitmap
android:src="@drawable/Icon"
android:gravity="center" />
</item>
</layer-list>
И как @Nicolo также указал, сформируйте API 23, можно установить android:width
и android:height"
в элемент.
Ответ 2
Несмотря на отсутствие параметров ширины и высоты для растрового изображения, вы можете установить размер растрового изображения с использованием силы тяжести и ширины и высоты элемента.
<item
android:width="230dp"
android:height="70dp">
<bitmap
android:gravity="fill_horizontal|fill_vertical"
android:src="@drawable/screen" />
</item>
Вы можете установить ширину, высоту и масштаб растрового изображения, используя гравитацию.
Я знаю, что это старый вопрос, но, возможно, кто-то найдет его полезным.
Внимание:
Как уже упоминалось в комментариях, этот метод ТОЛЬКО работает с уровнем API 23 (Android 6.0) и выше.
Ответ 3
Просто используйте
<item
android:width="200dp"
android:height="200dp"
android:drawable="@drawable/splash_background"
android:gravity="center" />
вместо
<item
android:left="200dp"
android:right="200dp">
<bitmap
android:src="@drawable/splash_background"
android:gravity="center" />
</item>
Ответ 4
Если вы хотите уменьшить ширину и высоту, чтобы она соответствовала экрану, и вам не нужно устанавливать точные размеры, вы можете просто установить left
и right
в родительский элемент. Это существенно добавит маркер вокруг изображения, поэтому он занимает меньше места:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="20dp"
android:right="20dp">
<bitmap
android:src="@drawable/Icon"
android:gravity="center" />
</item>
</layer-list>
В идеале вы должны загружать изображения разных размеров для каждого разрешения экрана (например, hdpi
, xxhdpi
), а затем вам не нужно будет программно устанавливать размер вообще. Вы можете увидеть полный список здесь.
Ответ 5
Попробуйте сделать это так, это сработало для меня:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:width="30dp"
android:height="30dp"
android:gravity="center"
>
<bitmap
android:src="@drawable/screen"/>
</item>
</layer-list>
Ответ 6
Я просто изменил размер изображения вручную, тогда он работает для меня
Ответ 7
этот я использую для изменения размера моего mipmap на экране запуска.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
<item android:drawable="@color/colorPrimary"/>
<item
android:width="200dp"
android:height="200dp"
android:gravity="center">
<bitmap
android:gravity="fill"
android:src="@mipmap/ic_launcher"
android:mipMap="true"/>
</item>
</layer-list>