1. ホーム
  2. android

[解決済み] Androidのビットマップ画像のサイズをXMLで表示する

2023-06-02 03:51:50

質問

私の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>

上記のビットマップの幅と高さを縮小するにはどうしたらよいでしょうか?

どのように解決するのですか?

から アンドロイド開発者 ビットマップ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 の回答を参照してください。 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:widthandroid:height" をアイテムに追加します。