2013-07-30 34 views
8

Używam prostego adaptera do wyświetlania mojego kodu. Niestety, potrzebuję zmienić kolor górnego textView.Zmiana koloru tekstu w Android.R.layout.simple_list_item_2

To jest urywek mojego kodu:

// 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); 

Próbowałem zrobić własny simple_list_item_2, ale nie pozwolił mi na zmianę koloru TextView w xml z jakiegoś powodu. Wszelkie pomysły, jak to zrobić?

Moja ostatnia myśl:

findViewById(android.R.id.text1).setTextColor(#000) ale nie wiem, gdzie go umieścić, a mój kod szesnastkowy nie działa.

+0

Aby przekazać kolor heksagonalny, należy użyć 'setTextColor (Color.parseColor (" # YOURCOLOR "))'. Jednak nie byłoby to możliwe bez niestandardowego adaptera. –

Odpowiedz

1

Tworzenie niestandardowego układu xml dla ListView przedmioty i ustawić kolor tekstu w TextView pomocą atrybutu textColor:

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

trzeba zastąpić getView z SimpleAdapter. Na przykład:

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 nie może być rozwiązany na typ' w moim przypadku – jaimin

+0

to jest naprawdę dziwne @ jaimin. Byłoby lepiej, gdybyś opublikował nowe pytanie, wyjaśnij swój problem. – Blackbelt

+1

Nie sądzę, że to dobre rozwiązanie. Nie powinieneś mieszać logiki aplikacji ze stylem. Byłoby lepiej zdefiniować niestandardowy układ, jak zasugerowano @FD_. – Jeremy

-1

Należy użyć setTextColor(Color.any color);

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

Jeśli używasz Spinner kolor tekstu rozwijana nie ulegną zmianie. Aby zmienić, musimy również dodać powyższą metodę do metody 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; 
             } 
Powiązane problemy