9

Spinner左側に白いテキスト、右側にセレクター アイコン (白い下向きの三角形) を持つ黒のグラデーションの背景が必要です。私が見たところ、これには2つの方法があります。

  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 パッチ イメージを作成し、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 パッチ イメージにストロークと丸みを帯びた角を追加する必要はありません。また、方法2よりも方法1をお勧めします。

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>(つまり、アルファが0に設定されている)を含む3番目のレイヤーも追加しましたが、パディングを追加しています。

于 2012-01-24T03:54:36.670 に答える