2015-03-12 6 views
7

Mein Hintergrund für mein Fragment ist weiß, und der Pfeil für den Spinner wird nicht angezeigt, wenn ich nicht darauf klicke. Android-Spinner Dropdown-Pfeil wird nicht angezeigt

Dies ist der Ausschnitt aus meiner Java-Datei:

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"); 

Das ist mein XMLfor die 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"/> 

Und das ist mein Layout für meine 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"/> 

Dies ist, wie mein Spinner mit einem weißen Hintergrund zu meinem Fragmente aussieht: White Colour Background - Spinner Und das ist, wie es aussieht, wenn ich meine Hintergrundfarbe lila ändern: Purple background - Spinner

Antwort

18

Dies funktioniert für mich, viel einfacher als gut:

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

Und in Ihrer Klassendatei:

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); 

Hoffe, das hilft;)

+1

In meinem Fall funktionierte nur das Einstellen des Themas. –

1

einfachste Methode ist, Set Hintergrund Bild (mit Pfeil) statt Farbe.

spinner.setBackgroundResource(R.drawable.spinner_img); 

hoffe es hilft.

+2

Ich habe versucht, auf diese Weise zu lösen, aber dann das Bild geht der ganzen Spinner. Ich möchte, dass der Pfeil an die Seite des Spinner geht. So sieht es in der Minute aus; [https://www.dropbox.com/s/oe59pxiehktwdet/Screenshot_2015-03-12-15-10-42-1.png?dl=0] –

14

Versuchen Sie dieses:

<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

Wie gehe ich dabei vor? Ich bin mir nicht sicher, wie ich es so versuche –

3

Fügen Sie einfach Thema in Spinner-Tag und Sie sind gut zu gehen.

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

überprüfen, ob Sie einen Hintergrund geben Sie Spinner und wenn Sie es entfernen und es wird das Problem