wake-up-neo.net

Stellen Sie die Textfarbe in Android Spinner ein

Ich möchte die Farbe des angezeigten ausgewählten Elements in meinem Spinner in Android ändern (Ausrichtung auf API-Ebene 16 und höher). Ich habe mehrere hier auf SO veröffentlichte Lösungen ausprobiert, darunter das Erstellen eines benutzerdefinierten Layouts für meine Drehfelder und die Verwendung einer ColorStateList als Textfarbeigenschaft des benutzerdefinierten Layouts, jedoch ohne Erfolg. Der Drehknopf wird auf einem halbtransparenten Hintergrund angezeigt. Daher funktioniert das benutzerdefinierte Layout für die Elemente nicht, da dem Drehknopf eine Farbe hinzugefügt wird. Derzeit ist meine Hack-Lösung

if (_colorCodeSpinner.getSelectedView() != null) {
    ((TextView) _colorCodeSpinner.getSelectedView()).setTextColor(0xFFFFFFFF);
}

dies funktioniert jedoch nur, wenn die ausgewählte Ansicht nicht null ist (was bei einer Orientierungsänderung der Fall ist).

Ich kann nicht glauben, dass es keine einfache Lösung zum Festlegen der Textfarbe gibt. Es scheint etwas zu sein, was Sie oft tun würden. Das gleiche gilt für das Ändern der Farbe des Pfeils

_colorCodeSpinner.getBackground().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);

Vermisse ich etwas? Was ist die empfohlene Methode zum Ändern der Farben bei einem Spinner?

 Android spinner

Wie im Bild zu sehen, ist die Textfarbe des angezeigten ausgewählten Elements im Drehfeld schwarz, ich möchte sie jedoch in weiß ändern.

EDIT

Zur Verdeutlichung: Ich suche kein kleines Stück Code, das zur Laufzeit Werte außer Kraft setzt (wie die beiden Ausschnitte, die ich in dieser Frage gepostet habe). Ich suche nach einem tatsächlichen Weg, dies richtig zu tun (wie im XML-Layout oder durch Themen). Um die Textfarbeigenschaft einmal einzustellen, damit ich sie nicht jedes Mal aktualisieren muss, wenn ich z. Wähle einen Artikel aus.

4
Daniel

Mach das :

  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
      @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
          ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE); /* if you want your item to be white */
      }

      @Override
      public void onNothingSelected(AdapterView<?> parent) {
      }
  });
5
Hugo Houyez

deklariere ArrayAdapter wie folgt und setze es auf deinen Spinner:

ArrayAdapter<String> adapter_state = new ArrayAdapter<String>(this,
                            R.layout.simple_spinner_dropdown_item, your_strings);
adapter_state.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
_colorCodeSpinner.setAdapter(adapter_state);

und Layout-XML-Datei simple_spinner_dropdown_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:textSize="20sp"
    Android:gravity="left"
    Android:textColor="#AAA"
    Android:padding="5dp"
    />

diese Arbeit für mich

2
Axbor Axrorov

Dies wird für Sie arbeiten

public void onItemSelected(AdapterView<?> parent, View arg1, int arg2,
        long arg3) {
    // TODO Auto-generated method stub

    item = (String) parent.getItemAtPosition(arg2);
   ((TextView) parent.getChildAt(0)).setTextColor(0x00000000);



    }

ODER
Mit dem Selektor können Sie die Farbe ändern

erstellen Sie eine XML-Datei mit dem Namen my_selctor.xml

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
     <item Android:state_pressed="true"
           Android:color="black" /> <!-- pressed -->
     <item Android:state_focused="true"
           Android:color="black" /> <!-- focused -->
     <item Android:color="white" /> <!-- default -->
 </selector>

und in deiner Textansicht stell es so ein

<TextView ...........
   Android:textColor=""@drawable/my_selctor"/>
2

versuchen Sie den folgenden Code: -

XML: -

   <Spinner
        Android:id="@+id/spinner"
        Android:layout_width="match_parent"
        Android:layout_margin="20dp"
        Android:popupBackground="#ffffff"
        Android:layout_height="match_parent">

    </Spinner>

erstellen Sie eine weitere XML-Datei für die Textansicht

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:text="dshsgv"
Android:padding="5dp"
Android:textColor="#000000">

</TextView>

dann in Ihrer Tätigkeit: -

public class MainActivity extends AppCompatActivity {
Spinner spinner;
String[] cat = {"Automobile", "Automobile"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    spinner = (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<String> adpter = new ArrayAdapter<String>     (MainActivity.this, R.layout.text, cat);
    spinner.setAdapter(adpter);
 }
 }
1
Pawanpreet

folge diesem link

private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

       ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE);
       ((TextView) parent.getChildAt(0)).setTextSize(12);

    }

    public void onNothingSelected(AdapterView<?> parent) {

    }
};
0

Sie können diese Layoutdatei styles.xml bearbeiten. Für diese Antwort verwende ich ein neues Projekt in Android Studio mit minSdkVersion 16 und AppCompatSpinner.

styles.xml layout:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="Android:spinnerItemStyle">@style/mySpinnerItemSelectedStyle</item>
</style>

<style name="mySpinnerItemSelectedStyle" parent="@Android:style/Widget.Holo.TextView.SpinnerItem">
    <item name="Android:textColor">@color/spinnerTextColor</item>
</style>

Und füge dies bei colors.xml hinzu:

<color name="spinnerTextColor">#ffffff</color>

Die Lösung wurde dem unten stehenden Link entnommen. Obwohl es für Dropdown-Elemente für Farbspinner verwendet wird, ist es meistens der gleiche Ansatz.

https://stackoverflow.com/a/22207394/6514926

0
NetrunnerX

Sie können so verwenden. Dadurch wird das Symbol des Menüs DropDowngeändert.

spinner.getBackground().setColorFilter(Color.parseColor("#FFFFFF"), PorterDuff.Mode.SRC_ATOP);

dann mache einen TextViewlayout name mit spinner_text.xml so

<CheckedTextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/spinnerText"
style="?android:attr/spinnerDropDownItemStyle"
Android:layout_width="match_parent"
Android:layout_height="?android:attr/listPreferredItemHeight"
Android:ellipsize="Marquee"
Android:textColor="#fff" />

und schreibe diesen Code in deine MainActivity.Java Klasse wie

 List<String> categories = new ArrayList<String>();
    categories.add("Automobile");
    categories.add("Business Services");
    categories.add("Computers");
    categories.add("Education");
    categories.add("Personal");
    categories.add("Travel");

    ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.spinner_text, categories);
    spinner.setAdapter(adapter);
    spinner.getBackground().setColorFilter(ContextCompat.getColor(this,R.color.white), PorterDuff.Mode.SRC_ATOP);
    // attaching data adapter to spinner
    spinner.setAdapter(adapter); 
0
AMAN SINGH