2010-12-05 16 views
22

Ich habe ein Problem mit den Droid X-Telefonen, wo Benutzer sagen, dass die Schriftfarbe weiß im Spinner ist, so dass es unsichtbar ist, wenn die Benutzer die Elemente markieren. Kein anderes Handy scheint dieses Problem zu haben. Ich wollte versuchen, die Schrift schwarz zu machen, um zu sehen, ob das hilft. Wie kann ich das machen?Wie ändert man die Spinner-Schriftfarbe?

Hier ist, wie ich derzeit den Spinner bevölkert. Es scheint, als wäre die simple_spinner_item auf Droid X's gebrochen.

String spin_arry[] = new String[str_vec.size()]; 
str_vec.copyInto(spin_arry); 
ArrayAdapter adapter = 
    new ArrayAdapter(this,android.R.layout.simple_spinner_item, spin_arry); 

Antwort

45

Ich werde Spinner Projektbeispiel von Android SDK für die nächsten Codebeispiele verwenden.


-Code:

Zuerst müssen Sie Sie benutzerdefinierte Adapter schaffen, die die Erstellung von Ansichten in Drop-Down-Liste abfängt:

static class CustomArrayAdapter<T> extends ArrayAdapter<T> 
{ 
    public CustomArrayAdapter(Context ctx, T [] objects) 
    { 
     super(ctx, android.R.layout.simple_spinner_item, objects); 
    } 

    //other constructors 

    @Override 
    public View getDropDownView(int position, View convertView, ViewGroup parent) 
    { 
     View view = super.getView(position, convertView, parent); 

     //we know that simple_spinner_item has android.R.id.text1 TextView:   

     /* if(isDroidX) {*/ 
      TextView text = (TextView)view.findViewById(android.R.id.text1); 
      text.setTextColor(Color.RED);//choose your color :)   
     /*}*/ 

     return view; 

    } 
} 

Dann erstellen Sie Adapter in Ihrem Code wie folgt aus:

String [] spin_arry = getResources().getStringArray(R.array.Planets);   
this.mAdapter = new CustomArrayAdapter<CharSequence>(this, spin_arry); 

Erläuterung:

Weil CustomArrayAdapter weiß, dass wir Androiden integriertes Layout Ressource verwenden, es weiß auch, dass der Text android.R.id.text1 in TextView mit id gesetzt werden. Aus diesem Grund kann er die Erstellung von Ansichten in der Dropdown-Liste abfangen und die Textfarbe in die gewünschte Farbe ändern.


Screenshot:

enter image description here

+0

bessere Lösung, diesen Code ändern: http://stackoverflow.com/questions/10409871/how-to-increase-spinner-item-font-size – Gerry

-1

Ihr eigenes Layout XML-Datei, machen und ein android geben: textcolor = „# 000“ für schwarzen Text

2

Um zu Sasad Antwort hinzufügen möchten, eine Kopie dieser Datei machen, die Sie in finden Ihr Android-Ordner ändert in Ihrem Projekt die Textfarbe des TextView in dieser Datei und verwendet dieses Layout, während der Adapter anstelle von Android initialisiert wird.

7

Einfach und Crisp ...

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(5); 
    } 

    public void onNothingSelected(AdapterView<?> parent) { 
    } 
}; 
+0

Dies bewirkt, dass das Textview zu null sein, wenn Sie Ihr Gerät drehen. – tolgap

7

schreiben eine R.layout.simplespinneritem:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:singleLine="true" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

Die ID ist android:id="@android:id/text1", legen Sie die Farbe für Schriftart und Hintergrund fest.

ArrayAdapter adapter = 
    new ArrayAdapter(this,packagename.R.layout.simple_spinner_item, spin_arry); 
+1

Wie verwenden Sie das, wenn die Elemente des Drehfelds aus mit dem Attribut entries geladen werden? – TheRealChx101

3
public class ee extends Activity{ 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ww); 
addListenerOnSpinnerItemSelection(); 

} 
public void addListenerOnSpinnerItemSelection(){ 

    ArrayList<String> array = new ArrayList<String>(); 
    array.add("item0"); 
    Spinner spinner1; 
    ArrayAdapter<String> mAdapter; 
    spinner1= (Spinner) findViewById(R.id.spinner2); 
    spinner1= new ArrayAdapter<String>(this, R.layout.spinner_item, array); 
    spinner1.setAdapter(mAdapter); 

} 
} 

und in XML-res/Layout neue XML-Datei hinzufügen: Typ Layout, Spinner

(in spinner_item.xml)

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="top" 
    android:singleLine="true" 
    android:textColor="#00f0ff" /> 
-1

Hier ist geeignete Weise Jungs,

zuerst die "simple_spinner_item.xml" Datei in Ihrem System, Folgen Sie den unten Pfad, C: \ Benutzer [Benutzername] \ AppData \ Local \ Android \ sdk \ Plattformen [android-23] \ data \ res \ layout

nun den Inhalt von "simple_spinner_item.xml" Datei kopieren

Zweitens schaffen die custom_spinner.xm l Datei in Ihrem Projekt res \ layout Ordner

und fügen Sie den kopierten Inhalt in kürzlich erstellte Datei

Hier ist die Probe:

res \ layout \ custom_spinner.xml

<?xml version="1.0" encoding="utf-8"?> 
<TextView android:textAlignment="inherit" 
    android:ellipsize="marquee" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:singleLine="true" 
    android:textColor="@color/dark_gray" 
    style="?android:attr/spinnerItemStyle" 
    android:id="@android:id/text1" xmlns:android="http://schemas.android.com/apk/res/android"/> 

Hier ist der eingestellte Adaptercode:

Spinner ddlArea = (Spinner) findViewById(R.id.ddlArea); 

ddlArea.setAdapter(new ArrayAdapter<String>(this, R.layout.custom_spinner, areaList)); 

Wo areaList ist die Liste

Danke, Ejaz Waquif

+0

Dies ist keine Antwort auf die Frage –

Verwandte Themen