2016-08-04 6 views
1

Ich möchte den Standard-Pfeilsymbol in Android mit einem benutzerdefinierten Bild ändern.Wie kann ich den Symbolpfeil von Spinner in Android durch ein Bild ersetzen?

Ich habe meine benutzerdefinierte Spinner (basierend auf dieser Antwort: How to customize a Spinner in Android, nur Ändern der benutzerdefinierten Werte) und es funktioniert gut, aber ich bin nicht in der Lage, den Pfeil des Spinner weder auf Stile oder programmatisch ändern.

Ich habe diese Frage gesehen: How to change image of a spinner aber da ich kein Spinner Tag habe, erlaubt es mir nicht, das Attribut android:spinnerSelector hinzuzufügen.

Wie kann ich das Standardpfeilsymbol durch ein Bild ersetzen?

Vielen Dank im Voraus!

Antwort

2

kurzes Beispiel:

Spinner spinner = (Spinner) findViewById(R.id.spinner); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
     this, 
     R.layout.custom_spinner, 
     ITEMS 
); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 

dann eine benutzerdefinierte XML erstellen (mit dem Namen: custom_spinner.xml) für Spinner:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    style="?android:attr/spinnerItemStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:singleLine="true" 
    android:textSize="yourTextsize" 
    android:drawablePadding="paddingValueYouWant" 
    android:drawableRight="@drawable/ic_arrow_down" <!--your custom icon--> 
    /> 

Für weitere Anpassung Spinner, folgen Sie diesem artircle: How to set font custom font to Spinner text programmatically?

+2

Ok, ich könnte den benutzerdefinierten Dropdown-Pfeil mit 'android hinzufügen: drawableRight' aber jetzt zeigt es sowohl das Standardsymbol Pfeil und das neue Bildsymbol, das ich hinzugefügt habe. Wie kann ich nur die zweite anzeigen? –

+0

können Sie einen Hintergrund 'Android: Hintergrund =" @ Drawable/bg "' oder 'android: background =" @ null "' für Spinner geben und es sollte unsichtbar sein :) – alway5dotcom

+0

Wenn Sie '@ drawable/bg' tun Sie einen benutzerdefinierten Hintergrund verwenden? Ich habe versucht mit 'android: background =" @ null "' aber es ändert nichts. –

1

Sie können es direkt im Stil ändern,

<style name="CustomSpinnerTheme" parent="android:Widget.Spinner"> 
    <item name="android:background">@drawable/spinner_arrow</item> 
</style> 
verwenden

einfach das ziehbar Symbol je nachdem, was Sie wollen, und stellen Sie dann das Thema im Spinner

<Spinner 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
style="@style/CustomSpinnerTheme"/> 
0
Do something like this. It works great! 

<RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="42dp" 
       android:layout_marginLeft="42dp"> 

      <Spinner 
       android:id="@+id/country_spinner" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:prompt="@string/country_prompt" 
       android:background="@null"> 

      </Spinner> 

       <ImageView 
        android:layout_width="14dp" 
        android:layout_height="14dp" 
        android:src="@drawable/spinner_arrow" 
        android:layout_alignParentRight="true" 
        android:layout_marginRight="15dp" 
        android:layout_centerVertical="true"/> 

      </RelativeLayout> 
Verwandte Themen