Search code examples
androidandroid-layoutspinnernine-patch

How to create android spinner without down triangle on the right side of the widget


I have a screen where the user has many items to input so screen space is at a premium.

I want the look of the widget on the screen (before the user presses it) to be similar to an EditText or the left portion of the Spinner widget (without the normal down triangle) on the right side of the Spinner. Then when the user presses the widget, he/she will get the normal Spinner selection dialog.

Is there some Spinner style attribute I can change to accomplish this?

I have not been able to see code like this.

Thanks


Solution

  • One thing you can do is take Spinner's source code from android code base, together with related layouts and resources, and use them to create your own custom widget (probably you will only need to remove the arrow from the layout and tweak the code a little depending on your needs).

    EDIT: You're right, following that post it was actually really simple :) You have to do two things. First, create a styles.xml file under res/values, open it and add the following:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style parent="@android:style/Widget.Spinner" name="SpinnerAsEditText">
            <item name="android:background">@android:drawable/edit_text</item>
        </style>
    </resources>
    

    Next, in your layout, add the Spinner like this:

    <Spinner style="@style/SpinnerAsEditText" anyOtherAttributeYouNeed="..."></Spinner>
    

    That's it, now the spinner will look like a plain EditText, without that unuseful and annoying down arrow.