wake-up-neo.net

Android Pfeilbild zum Spinner hinzufügen

Ich habe einen Hintergrund erstellt, den ich für einen Spinner verwenden kann. Ich möchte jetzt aber ein Pfeilbild in diesem Hintergrund sehen. Ich habe Dinge wie Android ausprobiert: drawableRight = "arrowimage", aber dies scheint nichts zu zeigen. Weiß jemand, wie ich ein Bild in meinen benutzerdefinierten Hintergrund für einen Spinner einfügen kann? 

19
user3781214

Erstellen Sie eine XML-Datei mit beliebigem Namen (z. B. spinner_bg.xml ) und fügen Sie die folgenden Zeilen hinzu

<?xml version="1.0"
      encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item>
    <layer-list>
      <item>
        <shape>
          <gradient Android:angle="90"
                    Android:endColor="#ffffff"
                    Android:startColor="#ffffff"
                    Android:type="linear" />

          <stroke Android:width="1dp"
                  Android:color="#504a4b" />

          <corners Android:radius="5dp" />

          <padding Android:bottom="3dp"
                   Android:left="3dp"
                   Android:right="3dp"
                   Android:top="3dp" />
        </shape>
      </item>
      <item>
        <bitmap Android:gravity="bottom|right"
                Android:src="@drawable/spinner_ab_default_holo_dark_am" />
        // you can use any other image here, instead of default_holo_dark_am
      </item>
    </layer-list>
  </item>
</selector>

Fügen Sie der Datei styles.xml, die sich im Werteverzeichnis befindet, die folgenden Zeilen hinzu

<style name="spinner_style" >
        <item name="Android:background">@drawable/spinner_bg</item>
        <item name="Android:layout_marginLeft">10dp</item>
        <item name="Android:layout_marginRight">10dp</item>
        <item name="Android:layout_marginBottom">10dp</item>
        <item name="Android:paddingLeft">8dp</item>
        <item name="Android:paddingTop">5dp</item>
        <item name="Android:paddingBottom">5dp</item>
</style>

Jetzt fügen Sie diesen Stil Ihrem Spinner als hinzu

<Spinner Android:id="@+id/spinner1"
         Android:layout_width="wrap_content"
         Android:layout_height="wrap_content"
         style="@style/spinner_style"
         Android:popupBackground="#cccccc" />
57
Aniruddha

Das funktioniert für mich. Möglicherweise fehlt der Standardstatus. Ohne Ihren Code zu veröffentlichen, ist es schwer zu sagen.

<!-- theme -->
<item name="Android:dropDownSpinnerStyle">@style/mySpinnerStyle</item>

<!-- style -->
<style name="mySpinnerStyle" parent="Android:Widget.Holo.Spinner">
      <item name="Android:background">@drawable/mySpinner_background</item>
</style>

<!-- mySpinner_background -->
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_enabled="false"
          Android:drawable="@drawable/mySpinner_disabled" />
    <item Android:state_pressed="true"
          Android:drawable="@drawable/mySpinner_pressed" />
    <item Android:state_pressed="false" Android:state_focused="true"
          Android:drawable="@drawable/mySpinner_focused" />
    <item Android:drawable="@drawable/mySpinner_default" />
</selector>
1
Rob

Setze dein Image ICON auf den Spinner:

<item>

    <layer-list>

        <item>
            <color Android:color="@Android:color/white" />
        </item>

        <item>
            <bitmap Android:gravity="center_vertical|right" Android:src="@drawable/down_arrow" />
        </item>

    </layer-list>

</item>

1
siddharth patel

Aniruddhas Lösung hat für mich gut funktioniert, als ich JellyBean (4.2.2) oder KitKat (4.4) verwendete. Aber leider auf Marshmallow (6.0) habe ich eine Ausnahme, mögliche Ursache hier erklärt: Verwendung von Ressourcen, die gezogen werden können

Am Ende habe ich nur einen Trick gemacht und Linear Image mit ImageView wie folgt platziert:

<LinearLayout
    Android:id="@+id/spinner_layout"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center">

    <Spinner
        Android:id="@+id/spinner"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content" />
    <ImageView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/your_arrow_drawable"/>
</LinearLayout>
1
takahawk

Das hat für mich funktioniert:

<Spinner
      Android:id="@+id/spinner"
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:theme="@style/ThemeOverlay.AppCompat.Light"
      Android:spinnerMode="dropdown" />
0
Jasmine John