How to create a Widget.Holo.Spinner-style widget in v7

前端 未结 2 1922
夕颜
夕颜 2021-01-04 11:16

I have a Button that I want to style like a Holo-style spinner, i.e. underlined with a triangle in the bottom right corner - the built-in contacts app for examp

相关标签:
2条回答
  • 2021-01-04 11:57

    I wouldn't recommend you to style a button like a spinner. Android have created a particular style for the button for a reason. THe reason behind this simple; you are going to confuse the users of your app if you style a button like a spinner, and they will think that the button is a spinner. That is why the Android design team do not recommend this.

    Nonetheless, if you still wish to show the button as a sninner, you can always copy the design of the spinner, save it as an image and set it as the background of yuor button through this xml:

    android:background="@drawable/spinner"
    

    The spinner drawable needs to be saved in the drawables folder as an image.

    0 讨论(0)
  • 2021-01-04 12:07

    User "ozi" got me there, unfortunately his answer got deleted because it was just a link.

    The trick is to use a custom attribute and override it with a v11-specific section. Here's the basic setup if you use themes:

    In values/attr.xml:

    <declare-styleable name="MyApp">
        <attr name="holoSpinnerStyle" format="reference" />
    </declare-styleable>
    

    You create your Spinner-Button like this:

    <Button
        style="?attr/holoSpinnerStyle"
         />
    

    And here's the key: You have different values in the theme depending on whether or not you have v11:

    In values/themes.xml:

    <style name="MyTheme">
        <item name="holoSpinnerStyle">@style/Widget.AppCompat.Spinner</item>
    </style>
    

    In values-v11/themes.xml:

    <style name="MyTheme">
        <item name="holoSpinnerStyle">@android:style/Widget.Holo.Light.Spinner</item>
    </style>
    

    If you don't use themes, your setup is almost identical - you just use styles.xml, create a specific style for your button, and use that.

    In pre-v11, this will create an old-style spinner, but that's actually good - a v11 spinner would look out of place in pre-v11 environment.

    0 讨论(0)
提交回复
热议问题