Ändern Sie die Spinner-Hintergrundfarbe, aber halten Sie den Pfeil

Ich habe mehrere Dinge darüber gelesen, aber ich kann nicht finden was ich brauche Ich möchte den grauen Pfeil behalten, aber ich möchte den horizontalen Balken aus dem Standard-Stil entfernen und einen weißen Hintergrund haben. Hast du eine Ahnung davon, wie ich das machen kann?

Hier ist was ich jetzt habe (default spinner style):

  • Wie zeigt man nur die obere und untere Grenze
  • GooglePlayServicesUtil.getErrorDialog ist null
  • Importieren Sie die Google Play Services-Bibliothek in Android Studio
  • Ermittlung von Bildgrößen für mehrere Bildschirmgrößen / Dichten
  • Warum ist meine Suchfunktion Intent.getAction () null?
  • Die Methode getSystemService (String) ist undefined für den Typ Listen
  • Bildbeschreibung hier eingeben

    Hier ist was ich will

    Bildbeschreibung hier eingeben

  • CollapsingToolbar funktioniert nicht mit nicht-so-hohem Inhalt
  • Toast "Nachricht an einen Handler auf einem toten Thread"
  • Dagger-Code, der NoClassDefFoundError gibt, wenn Espressotests ausgeführt werden, normaler Lauf funktioniert gut
  • Telefonnummer formatiert ein EditText in Android
  • Abbrechen der Http-Verbindung in Android
  • Erhalten Sie aktive Flaggen auf Android-Fenster
  • 9 Solutions collect form web for “Ändern Sie die Spinner-Hintergrundfarbe, aber halten Sie den Pfeil”

    Für den Rekord fand ich eine einfache Lösung: Wickle deinen Spinner in ein relatives Layout und füge ein Bild hinzu:

      <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/borderbottom_white"<!-- white background with bottom border --> android:layout_marginTop="15dp" > <Spinner android:id="@+id/postfield_category" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="16sp" android:background="@null" android:minHeight="0dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:src="@drawable/arrowspinner" /> </RelativeLayout> 

    Ich habe eine kleine Änderung auf der Grundlage von @Mansur Khan Antwort.

    Wir müssen in diesem Fall keine ImageView hinzufügen, da der Spinner-Hintergrund schon transparent ist. So überprüfen Sie den Code unten:

      <RelativeLayout android:layout_width="match_parent" android:layout_height="70dp" android:background="@drawable/bg_spinner"> <Spinner style="@style/Widget.AppCompat.DropDownItem.Spinner" android:layout_width="match_parent" android:layout_height="70dp" android:id="@+id/sign_up_country" /> </RelativeLayout> 

    Hier ist der Screenshot

    Vor: Bildbeschreibung hier eingeben

    Nach: Bildbeschreibung hier eingeben

    Bg_spinner.xml

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="8dp" android:bottom="8dp"> <shape> <solid android:color="@android:color/white" /> <corners android:radius="2dp"/> <stroke android:width="1dp" android:color="#EBEBEB" /> <padding android:top="16dp" android:bottom="16dp" android:left="8dp" android:right="16dp"/> </shape> </item> </layer-list> 

    Eine einfache Lösung, die es nicht erfordert, dass Sie Ihre eigenen zeichen für den Pfeil erstellen, ist, den Spinner mit einem RelativeLayout zu wickeln und die Hintergrundfarbe im RelativeLayout , nicht der Spinner:

     <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#f00" > <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 

    Benutze das:

     yourspinner.setOnItemSelectedListener(this); @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { ((TextView) yourspinner.getSelectedView()).setBackgroundColor(getResources() .getColor(R.color.your_color)); } 

    Und deine Klasse sollte OnItemSelectedListener implementieren.

    Eine gute Möglichkeit, Spinner und andere Android-Steuerelemente anzupassen, ist die Android Asset Studio- Website zu verwenden und den Android Holo Colors Generator zu wählen. Dies wird alle Vermögenswerte, die Sie benötigen, einschließlich der "Unterstreichung" zu schaffen. Es erzeugt auch die XML-Dateien, die die Änderungen implementieren.

    Sobald Sie die ZIP-Datei von dieser Website heruntergeladen haben, kopieren Sie einfach die Bilder und XML-Dateien in Ihr Projekt.

    Sie können dann die erforderlichen Bilddateien bearbeiten, um die Unterstreichung zu entfernen. Sie sind 9-Patch-Dateien, genannt:

    • Apptheme_spinner_default_holo_light.9.png
    • Apptheme_spinner_disabled_holo_light.9.png
    • Apptheme_spinner_focused_holo_light.9.png
    • Apptheme_spinner_pressed_holo_light.9.png

    Für eine vollständigere Erläuterung des Prozesses und um einige der Beispiel-XML-Dateien zu sehen, beziehen Sie sich bitte auf meine verwandte Antwort:

    • Ändern Sie die Farbe des kleinen Dreiecks auf Spinner in android

    Hier ist der Code der benutzerdefinierten Spinner. Bitte schau es dir an und sag es mir. Noch nicht habe ich das getestet. Also bitte informieren Sie mich nach der Prüfung, ob es Ihr Problem löst.

     <Spinner android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/spinner_background" android:gravity="center" android:paddingRight="10dp" android:spinnerMode="dropdown" android:textColor="your text color" android:textSize="your text size" /> 

    Hier ist die ziehbare (spinner_background.xml), um den Hintergrund der Spinner zu schaffen.

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="border color" /> <corners android:radius="3dp" /> </shape> </item> <item android:bottom="1dp" android:left="1dp" android:right="1dp" android:top="1dp"> <shape android:shape="rectangle" > <solid android:color="@android:color/white" /> <corners android:radius="3dp" /> </shape> </item> </layer-list> 

    Bearbeiten:

    Bitte überprüfen Sie diesen Link, der Ihnen eine Idee gibt. Passen Sie Spinner Hintergrund an

    ODER

    Du kannst so etwas machen.

     <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="spinner background image"> <Spinner android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:src="arrow image" /> </RelativeLayout> 

    Unten Layout wird einen Hintergrund in Spinner mit Wunsch Farbe Dropdown Pfeil erstellen

      <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".6" android:background="@drawable/edit_text_rounded_shape" android:gravity="center|center_vertical"> <Spinner android:id="@+id/spinerComanyName" android:layout_width="0dp" android:layout_height="wrap_content" android:padding="4dp" android:layout_weight=".6" android:layout_gravity="center" android:entries="@array/spinner_item" android:spinnerMode="dropdown" android:theme="@style/Spinner" /> </LinearLayout> <style name="Spinner"> <!-- Used for the bottom line when not selected / focused --> <item name="colorControlNormal">@color/black</item> <item name="colorControlActivated">@color/colorPrimary</item> <!-- colorControlActivated & colorControlHighlight use the colorAccent color by default --> </style> 

    Edit_text_rounded_shape, die Hintergrundfarbe und abgerundete Ecke bieten

      <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="10dp"> <solid android:color="@color/white"/> <stroke android:color="@color/grey"/> <corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/> </shape> 

      android:layout_alignParentRight="true" android:layout_width="@dimen/spinner_width" android:layout_height="wrap_content" android:id="@+id/spnLocation" android:entries="@array/labelFamily" android:layout_centerVertical="true" android:backgroundTint="@color/color_gray" 

    Diese Arbeit für mich

    Hallo anstatt die Spinner-Komponente um Parent Layouts wie LinearLayout, RelativeLayout usw. zu verpacken, die das Layout-Parsing erhöht, einfach eine Zeichenkette namens spinner_bg.xml unter Zeichnungsordner erstellen.

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="right" android:src="@drawable/icn_dropdown_arw" /> </item> </layer-list> 

    Set spinner_bg als Hintergrund deines Spinners und es funktioniert wie Charme:

     <Spinner android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="5dp" android:background="@drawable/spinner_bg" /> 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.