Android: How to Make A Drawable Selector
Asked Answered
A

2

36

I feel like this is kind of a silly question, but here I go anyways. I have an image button, and I want to be able to change it's image everytime it is clicked. The API seems to say that the best way to go about doing this is to create xml resource in the drawable folder that contains a selector and values. However when I go to make a new android xml resource, there's no option for drawables. What am I missing?

Aetolia answered 11/4, 2011 at 16:42 Comment(1)
you can check the solution here clickTafia
E
58

You can add this in Android Studio, use Right click on project structure -> New -> Drawable resource file. It should look like this:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_enabled="false" 
        android:drawable="@drawable/cell_top_selected" />
    <item android:drawable="@drawable/cell_top" />
</selector>
Enchant answered 11/4, 2011 at 16:43 Comment(1)
Should a selector (color/drawable) always have a default value? If you match all possible cases, it should be fine too, right? What happens if you don't match at all? Will the app crash?Trifid
D
38

You can try this also as a selector

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

    <!-- pressed -->
    <item android:drawable="@drawable/button_1_selected" android:state_pressed="true"/>
    <!-- focused -->
    <item android:drawable="@drawable/button_1_normal" android:state_focused="true"/>
    <!-- default -->
    <item android:drawable="@drawable/button_1_normal"/>

</selector>
Divers answered 8/10, 2012 at 12:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.