【问题标题】:Custom Spinner with rounded corners, stroked edge and a selector icon带有圆角、描边和选择器图标的自定义微调器
【发布时间】:2012-01-23 23:33:51
【问题描述】:

我希望我的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。非常感谢任何帮助。

【问题讨论】:

    标签: android android-xml android-spinner


    【解决方案1】:

    我在我的应用程序中做了类似于方法 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 中,我还添加了第三层,其中包含不可见的 &lt;shape&gt;(即其 alpha 设置为 0)但添加了填充。

    【讨论】:

    • 谢谢!这样做我必须使用位图吗?因为我只想要一个纯白色的三角形,所以我需要它有一个透明的背景,所以想要使用 .png。我会去看看我能想出什么。
    • @Aaron Klotz 在我的例子中,箭头图像被绘制在右上角。相反,我想看到带有正确填充的箭头 img。但不工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多