概要
ButtonやSpinnerなどの背景に画像付きdrawableを使いたいときのメモです。
結論
- selectorのdrawableにlayer-listを使う
サンプルコード
selector
drawable/selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/default"
android:state_pressed="false"/>
<item
android:drawable="@drawable/pressed"
android:state_pressed="true"/>
</selector>
押下前のdrawable
drawable/default.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/default" />
<corners android:radius="@dimen/radius" />
<stroke
android:width="@dimen/stroke_width"
android:color="@color/gray" />
</shape>
</item>
<item android:right="@dimen/spacing_nomal" >
<bitmap
android:src="@drawable/ic_arrow_down"
android:gravity="right"/>
</item>
</layer-list>
押下後のdrawable(solidの色を変えてるだけ)
drawable/default.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/pressed" />
<corners android:radius="@dimen/radius" />
<stroke
android:width="@dimen/stroke_width"
android:color="@color/gray" />
</shape>
</item>
<item android:right="@dimen/spacing_nomal" >
<bitmap
android:src="@drawable/ic_arrow_down"
android:gravity="right"/>
</item>
</layer-list>
参考
- [Drawable Resources | Android Developers]
(https://developer.android.com/guide/topics/resources/drawable-resource.html)