LoginSignup
2
4

More than 5 years have passed since last update.

【Android】ButtonやSpinnerの背景のSelectorに画像付きdrawableを使う

Posted at

概要

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>

参考

2
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4