2015-03-12 8 views
7

il mio sfondo per il mio frammento è bianco e la freccia per lo spinner non viene visualizzata a meno che non faccia clic su di esso.Dropdown per Android Spinner freccia che non viene visualizzata

Questo è il frammento dal mio file Java:

spinner = (Spinner)v.findViewById(R.id.spinner); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.accounts,R.layout.spinner_item); 
    adapter.setDropDownViewResource(R.layout.spinner_dropdown_items); 
    spinner.setAdapter(adapter); 
    spinner.setPrompt("Select an account"); 

Questo è il mio XMLfor lo spinner_item

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
style="?android:attr/spinnerItemStyle" 
android:singleLine="true" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:ellipsize="marquee" 
android:textAlignment="inherit" 
android:textSize="16dp" 
android:background="#FFFFFFFF" 
android:textColor="#ff252525"/> 

E questo è il mio layout per i miei spinner_dropdown_items.

<?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:singleLine="true" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:ellipsize="marquee" 
android:textAlignment="inherit" 
android:textSize="16dp" 
android:background="#FFFFFFFF" 
android:textColor="#ff252525"/> 

Ecco come il mio filatore guarda con uno sfondo bianco per il mio frammento: White Colour Background - Spinner E questo è come appare quando cambio il mio colore di sfondo viola: Purple background - Spinner

risposta

18

Questo funziona per me, molto più semplice così:

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

E nel tuo file di classe:

spinner = (Spinner) view.findViewById(R.id.spinner); 
ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.spinner_data, android.R.layout.simple_spinner_dropdown_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 

Spero che questo aiuti;)

+1

Nel mio caso solo l'impostazione del tema ha funzionato. –

1

metodo più semplice è impostare lo sfondo immagine (con freccia) al posto del colore.

spinner.setBackgroundResource(R.drawable.spinner_img); 

spero che sia d'aiuto.

+2

ho provato in questo modo, ma poi l'immagine va tutto il filatore. Voglio che la freccia vada al lato dello spinner. Quindi nel momento in cui assomiglia a questo; [https://www.dropbox.com/s/oe59pxiehktwdet/Screenshot_2015-03-12-15-10-42-1.png?dl=0] –

14

Provate questo:

<Spinner 
    android:id="@+id/spinnPhoneTypes" 
    android:layout_width="0dp" 
    style="@android:style/Widget.Spinner.DropDown" 
    android:layout_height="@dimen/thirtyFive" 
    android:layout_marginLeft="10dp" 
    android:layout_weight="1" 
    android:background="@drawable/shape_drop_down_normal" 
    android:gravity="center_vertical" /> 

shape_drop_down_normal.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape> 
      <solid android:color="@android:color/transparent" /> 

      <stroke 
       android:width="1dp" 
       android:color="#6f94c7" /> 

      <padding 
       android:bottom="10dp" 
       android:left="2dp" 
       android:right="10dp" 
       android:top="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <bitmap 
      android:gravity="end" 
      android:src="@drawable/drop_arrow" /> 
    </item> 
</layer-list> 
+0

Come faccio a fare questo? Non sono troppo sicuro di come provo in questo modo –

3

Basta aggiungere il tema nel tag spinner e sei a posto.

android:theme="@style/ThemeOverlay.AppCompat.Light" 
1

di controllo se si stanno dando un fondo per voi Spinner e se lo fai rimuoverlo e che possa risolvere il problema