2013-07-30 3 views
8

Я использую простой адаптер для отображения моего кода. К сожалению, мне нужно изменить верхний цвет textView.Изменить цвет текста в android.R.layout.simple_list_item_2

Это фрагмент моего кода:

// Keys used in Hashmap 
String[] from = { "txt1", "txt2" }; 
// Ids of views in listview_layout 
int[] ids = { android.R.id.text1, android.R.id.text2 }; 
SimpleAdapter adapter = new SimpleAdapter(this, aList, 
android.R.layout.simple_list_item_2, from, ids); 
setListAdapter(adapter); 

Я пытался сделать свой собственный simple_list_item_2, но он не позволил бы мне изменить цвет TextView в XML по какой-то причине. Есть идеи, как это сделать?

Моя последняя мысль:

findViewById(android.R.id.text1).setTextColor(#000), но я не знаю, куда поместить его, и мой шестнадцатеричный код не работает.

+0

Для передачи шестнадцатеричного цвета вам необходимо использовать 'setTextColor (Color.parseColor (" # YOURCOLOR "))'. Однако это не будет работать без пользовательского адаптера. –

ответ

1

Создание пользовательского макета XML для ListView элементов и установить цвет текста TextView с помощью атрибута textColor:

<TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="TextView" 
      android:textColor="#ff0000" /> 
16

вы должны переопределить GetView от SimpleAdapter. Например:

SimpleAdapter adapter = new SimpleAdapter(this, aList, 
      android.R.layout.simple_list_item_2, from, ids) { 

     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = super.getView(position, convertView, parent); 
      TextView text1 = (TextView) view.findViewById(android.R.id.text1); 
      text1.setTextColor(Color.RED); 
      return view; 
     }; 
    }; 
+0

'ViewGroup не может быть разрешен для типа 'в моем случае – jaimin

+0

это действительно странно @jaimin. Было бы лучше, если вы опубликуете новый вопрос, объясните свою проблему. – Blackbelt

+1

Я не думаю, что это хорошее решение. Вы не должны смешивать логику приложения со стилем. Было бы лучше определить пользовательский макет, как предлагалось @FD_. – Jeremy

-1

Вы должны использовать setTextColor(Color.any color);

TextView txt = (TextView) view.findViewById(R.id.text1); 
txt.setTextColor(Color.yellow); 
0

Если вы используете цвет выпадающий текст Spinner не изменится. Чтобы изменить, мы должны также добавить вышеописанный метод методом getDropDownView.

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; 
             } 
Смежные вопросы