2013-12-04 5 views
1

У меня есть прядильщик внутри макета.Цвет текста внутри прядильника

<Spinner android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:spinnerMode="dropdown" 
    android:id="@+id/spn_college_names"></Spinner> 

Я устанавливаю это значение с помощью Matrix Cursor и Simple Cursor Adapter, как показано ниже spn_CollegeNames = (Spinner) findViewById (R.id.spn_college_names);

String[] ColoumnNames = {"_id","CollegeName"}; 
    _CollegeNames = getResources().getStringArray(R.array.settings_college_names); 
    MatrixCursor cursor = new MatrixCursor(ColoumnNames); 

    for (int CollegeIndex = 0; CollegeIndex < _CollegeNames.length; CollegeIndex++) 
    { 
     cursor.addRow(new Object[] {CollegeIndex+1 , _CollegeNames[CollegeIndex]}); 
    } 

    SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, cursor, new String[] {"CollegeName"}, new int[] {android.R.id.text1},0); 
    /*TextView tv = (TextView) spn_CollegeNames.getSelectedView(); 
    tv.setTextColor(Color.BLACK);*/ 
    spn_CollegeNames.setAdapter(cursorAdapter); 

Моя проблема в том, что текст в прядильщике появляется в сером цвете. Я хочу изменить текст на черный. Я знаю, что я могу использовать атрибут android: enteries в макете, но в будущем я буду заменять курсор матрицы курсором базы данных, что означает, что я не буду иметь фиксированные значения массива строк.

+0

мая [это] (http://v4all123.blogspot.in/2013/07/change-spinner-text-color-by -button.html), помогите вам. – Gunaseelan

ответ

3

Вы можете достичь путем переопределения getDropdownView и/или GetView. getDropdownView возвращает представление для расширенного счетчика, а getView возвращает вид для свернутого счетчика.

SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, cursor, new String[] {"CollegeName"}, new int[] {android.R.id.text1},0){ 

@Override 
public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    View view = super.getDropDownView(position,convertView,parent); 
    TextView text = (TextView)view.findViewById(android.R.id.text1); 
    text.setTextColor(Color.BLACK); 
    return view; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View view = super.getView(position,convertView,parent); 
    TextView text = (TextView)view.findViewById(android.R.id.text1); 
    text.setTextColor(Color.BLACK); 
    return view; 
} 

}; 
+0

Программа сбой, потому что текст TextView имеет значение NULL. – Akhila

+0

Я отредактировал код, ему не хватило возврата в getView и getDropdownView, и появилась ошибка при получении. Попробуйте снова – vandzi

1

Попробуйте это:

private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, 
      long id) { 
     ((TextView) parent.getChildAt(0)).setTextColor(Color.BLACK); 
    } 

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

Спасибо @Virag Он меняет цвет текста выбранного элемента, у вас есть решение по изменению цвета всех выпадающих значений. – Akhila

+0

Проверьте эту ссылку http://stackoverflow.com/a/17161282/1208563 –

+0

Спасибо, но это мешает мне использовать курсор. – Akhila

1

Вместо android.R.layout.simple_spinner_dropdown_item вы должны предоставить свой custom textView пункт.

Spinnerlayout.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:textColor="#00eeff" 
android:text="TextView" /> 

Ваш адаптер

SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.spinnerlayout, cursor, new String[] {"CollegeName"}, new int[] {android.R.id.text1},0); 
Смежные вопросы