読者です 読者をやめる 読者になる 読者になる

Android GridViewのItemの背景を変える

簡単かと思ったが、やってみたらけっこうはまった。

やり方

ArryAdapterにitemのlayoutを設定、itemのbackgroundにtextViewの背景を変更するselectorを設定。

ハマったところ

selected状態に色を変えたくて、android:state_selectedを設定してもぜんぜん効かない。 なんと、android:state_activatedに変えたらいけた。

ソース

ArrayAdapter<RoomBean> adapter = new ArrayAdapter<>(getApplicationContext(), R.layout.grid_room_item, result);
                gridView.setAdapter(adapter);
                gridView.setChoiceMode(GridView.CHOICE_MODE_SINGLE);
                gridView.setItemChecked(0, true);
<GridView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="0.17"
            android:id="@+id/gridViewRoom"
            android:numColumns="3"
            android:layout_marginTop="10dp"
            android:verticalSpacing="10dp"
            android:horizontalSpacing="10dp"
            android:padding="10dp"
            android:background="#999999"
            android:listSelector="@android:drawable/list_selector_background">
        </GridView>
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/textView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textSize="30sp"
    android:padding="20dp"
    android:background="@drawable/item_room_selector"
    android:text="TextView" />
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_activated="true" >
        <shape android:shape="rectangle">
            <solid
                android:color="@color/LightBlue"
                />
        </shape>
    </item>
    <item
        android:state_pressed="true" >
        <shape android:shape="rectangle">
            <solid
                android:color="@color/LightBlue"
                />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid
                android:color="@color/White"
                />
        </shape>
    </item>

</selector>