3

imagesrcとbackgroundcolorの両方が設定されたImageViewがあります。

この画像は、グリッドビューアイテムのレイアウトであるレイアウトになっています。

アイテムを選択すると画像の背景は変化しますが、画像のsrcは変化しないxmlセレクターを作成します。

テキスト付きのアイコンが付いたAndroidのメインメニューに似たもので、画像のみを強調表示したいと思います。

オブジェクトの状態ごとに画像を作成するのではなく、背景を変更するだけです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/img_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:background="@drawable/selector_categorie"
        android:src="@drawable/ic_launcher"/>

    <TextView
        android:id="@+id/text_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/img_0"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/text_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_1"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/text_3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_2"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:textAppearance="?android:attr/textAppearanceMedium" />


</RelativeLayout>
4

1 に答える 1

8

これは、StateListDrawableを使用して実現できます。

次のようなものを含む、たとえばフォルダ内に背景の描画可能なリソースを作成item_background.xmlします。/drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@color/color1" android:state_pressed="true"/>
  <item android:drawable="@color/color2" android:state_selected="true"/>
  <item android:drawable="@color/color3" android:state_activated="true"/>
  <item android:drawable="@color/color4"/>
</selector>

次に、/values/colors.xmlファイルに色の値を入力します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="color1">#DDff8800</color>
  <color name="color2">...</color>
  <!-- more colors... -->
</resources>

最後に、その描画可能なリソースをレイアウトのアイテムの背景としてに設定しますandroid:background="@drawable/item_background"

src画像はそのまま残ります。

于 2013-01-13T12:04:20.713 に答える