2015-05-09 20 views
5

ich habe Tätigkeiten, die ich mit meiner benutzerdefinierten Thema Themen, aber für Spinner choosed ich es mit AppCompat v21, um Stil, aber ich habe diese: enter image description hereÄndern Spinner Pfeil, AppCompat v21

So wie auf den Pfeil Spinner ändern schwarz oder blau sein, wenn es einen Weg gibt?

ich dies als ähnliche Frage gefunden, aber hat keine Antwort: https://stackoverflow.com/questions/28561105/add-custom-spinner-arrow hier ist mein Spinner:

<Spinner 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/spinner2" 
     android:layout_marginTop="10dp" 
     android:layout_centerInParent="true" /> 

i verwendet, um dieses den Spinner stylen:

<style name="MyTheme.SpinnerAppTheme" parent="Widget.AppCompat.Spinner"> 
    </style> 

dies wie verwende ich den Adapter

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       getBaseContext(), R.array.listMedRes, android.R.layout.simple_spinner_item); 

Ich möchte nur zum Thema der Spinner, danke viel

Antwort

8

anpassen Da Sie AppCompat-v21 verwenden, können Sie die Vorteile der neuen Material Design-Stile Attribute annehmen:

colorPrimary: Ihre App Branding Farbe für die App-Leiste, gilt für Aktionsleiste

colorPrimaryDark: dunklere Variante für die Statusleiste und Kontext App Bars

colorAccent: Damit können Sie definieren helle Ergänzung zur primären Markenfarbe. Standardmäßig ist dies die Farbe der Rahmen Kontrollen angewendet (via colorControlActivated)

colorControlNormal: Farbe Rahmen Kontrollen angewendet in ihrem normalen Zustand

colorControlActivated: in ihren aktivierenden Rahmen Kontrollen angewendet

Hier ist ein Beispiel für Sie

styles.xml

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- colorPrimary is used for the default action bar background --> 
    <item name="colorPrimary">@color/primary</item> 
    <!-- colorPrimaryDark is used for the status bar --> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <!-- colorAccent is used as the default value for colorControlActivated which is used to tint widgets --> 
    <item name="colorAccent">@color/accent</item> 
    <item name="colorControlNormal">@color/primary</item> 
</style> 

Farben.xml

<resources> 
    <color name="primary">#ff0000ff</color> 
    <color name="primary_dark">#ff0000af</color> 
    <color name="accent">#870000ff</color> 
    <color name="white">#ffffffff</color> 
</resources> 

Hier ist, wie es

enter image description here

Hoffnung sieht das hilft.

+5

Dies funktionierte mit appcompat Thema zu die ganze Aktivität, ist es eine Möglichkeit, es nur im Spinner zu benutzen? –

+0

eine elegante Lösung da! – Juni

7

Es gibt eine Möglichkeit, Ihre Pfeilfarbe zu ändern ... eigentlich ist es nicht Farbe können Sie dieses Bild mit blauer Farbe Bild ändern .. Erstellen Sie eine XML-Datei myspinner_selector in Ihrem Zeichenprogramm Ordner und Paste

<?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/blue_arrow" /> // you can use any other image here, instead of default_holo_dark_am 
     </item> 
     </layer-list></item> 

</selector> 

blue_arrow ist ein Bild, und fügen Sie diesen Stil in Ihrem Stil Datei

<style name="spinner_style" > 
     <item name="android:background">@drawable/myspinner_selector</item> 
     <item name="android:layout_marginLeft">5dp</item> 
     <item name="android:layout_marginRight">5dp</item> 
     <item name="android:layout_marginBottom">5dp</item> 
     <item name="android:paddingLeft">5dp</item> 
     <item name="android:paddingTop">5dp</item> 
     <item name="android:paddingBottom">5dp</item> 

     </style> 

schließlich diesen Stil in Ihrem Spinner hinzufügen

<Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     style="@style/spinner_style"   

     /> 

es sieht so aus. Sie benötigen enter image description here

1

können Sie es mit dem Attribut Farbton Farbe tönten.

<Spinner android:id="@+id/spinner" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:backgroundTint="@color/white" 
/> 
+0

es funktioniert nicht für Pre-Lollipop – HendraWD

25

Vielleicht ist das spät, aber es ist besser als nie. Um auf Ihre Frage zu antworten: "Gibt es einen Weg, es nur im Spinner zu benutzen?". Die Antwort lautet ja, siehe unten stehenden Code.

Fügen Sie diesen Code zu Ihrem Thema oder Stil-Datei

<style name="customSpinnerTheme" parent="yourAppThemeThatUseAppCompat21"> 
    <item name="colorControlNormal">#eaeaea</item> 
    <item name="colorControlActivated">#000000</item> 
    <item name="colorControlHighlight">#000000</item> 
</style> 

Dann in Ihrem XML, die Spinner Sie verwenden kann, diese Zeile hinzufügen

android:theme="@style/customSpinnerTheme" 

Beispiel:

  <Spinner 
       android:theme="@style/customSpinnerTheme" 
       android:id="@+id/spinner" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="8dp" 
       android:layout_marginRight="8dp" 
       android:spinnerMode="dialog" /> 
+5

in ist nie zu spät, um Wissen zu teilen, danke, kann dies helfen anderen –

+0

Wie kann ich die Hintergrundfarbe des Spinner innerhalb dieses Stils? –

+0

@TylerPfaff beziehen sich auf diese Lösung http://stackoverflow.com/questions/13703233/style-android-spinner – HendraWD

2

Blick auf unter dem Code. spinner_bg.xml unter ziehbar Ordner

<?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="270" android:centerColor="#d0d0d0" android:endColor="#c5c6c6" android:startColor="#dbdadb" android:type="linear" /> 
        <stroke android:width="1dp" android:color="#7a7a7a" /> 
        <corners android:radius="1dp" /> 
        <padding android:left="3dp" android:right="3dp" /> 
       </shape></item> 
      <item><bitmap android:gravity="center|right" android:src="@drawable/dropdown_icon_black" /> 
      </item> 
     </layer-list></item> 
</selector> 

Schreib unten Code in styles.xml

<style name="spinner_style"> 
     <item name="android:background">@drawable/spinner_bg</item> 
</style> 

erstellen Stil Nehmen

<Spinner 
    android:id="@+id/spinner" 
    style="@style/spinner_style" 
    android:layout_width="fill_parent" 
    android:layout_height="40dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:focusable="true" 
    android:overlapAnchor="false" 
    android:paddingRight="10dp" 
    android:spinnerMode="dropdown" 
    android:textColor="@android:color/white" /> 

Verwendung dieses Bild für Spinner ziehbar enter image description here

Spinner
+0

funktioniert wie Charme :) –

Verwandte Themen