9

我希望我Spinner有一个黑色渐变背景,左边有白色文本,右边有一个选择器图标(一个向下的白色三角形)。在我看来,有两种方法可以解决这个问题:

  1. 如果我将背景设置为 xml 可绘制资源,我可以让我Spinner看起来很完美,但是我需要以某种方式在右侧添加白色三角形,我不知道该怎么做:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <gradient
                android:startColor="#343434"
                android:endColor="#171717"
                android:angle="270" />
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
            <corners
                android:radius="4dp" />
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="3dp"
                android:bottom="3dp" />
        </shape>
    </item>
    </selector>
    
  2. 我创建了一个包含三角形的 9-patch 图像,然后使用 xml 来圆角并向图像添加描边。我对此进行了尝试,但无法使其发挥作用:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/spinnerblack" >
            <stroke
                android:width="1dp"
                android:color="#ffffff" />
            <corners
                android:radius="3dp" />
            <padding
                android:left="3dp"
                android:top="3dp"
                android:right="3dp"
                android:bottom="3dp" />
        </item>
    </selector>
    

有人可以告诉我我可以为方法 1 做什么或我在方法 2 中做错了什么吗?我宁愿不必在我的 9-patch 图像中添加描边和圆角,因为我认为它看起来不太好。另外,我更喜欢方法1而不是方法2。非常感谢任何帮助。

4

1 回答 1

13

我在我的应用程序中做了类似于方法 1 的操作。基本上,您需要将选择器与层列表结合起来:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <layer-list>
            <item>
                <shape>
                    <gradient
                        android:startColor="#343434"
                        android:endColor="#171717"
                        android:angle="270" />
                    <stroke
                        android:width="1dp"
                        android:color="#ffffff" />
                    <corners
                        android:radius="4dp" />
                    <padding
                        android:left="3dp"
                        android:top="3dp"
                        android:right="3dp"
                        android:bottom="3dp" />
                </shape>
            </item>
            <item
                android:top="12dp"
                android:right="15dp">
                <bitmap android:src="@drawable/arrow_bitmap"
                        android:gravity="top|right" />
            </item>
        </layer-list>
    </item>
</selector>

在我的 xml 中,我还添加了包含<shape>不可见的第三层(即其 alpha 设置为 0),但添加了填充。

于 2012-01-24T03:54:36.670 回答