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>