Próbuję zmienić kolor tła TextView
widżetu Androida, gdy użytkownik go dotknie. W tym celu stworzyłem selektor, który jest przechowywany w res/color/selector.xml
i z grubsza wygląda tak:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:color="@color/semitransparent_white"
/>
<item
android:color="@color/transparent"
/>
</selector>
clickable
Atrybutem TextView
jest true
w przypadku, który jest przedmiotem zainteresowania.
Kiedy przypisuję ten selektor do TextView
as android:background="@color/selector"
, otrzymuję następujący wyjątek w czasie wykonywania:
BŁĄD / AndroidRuntime (13130): spowodowane przez: org.xmlpull.v1.XmlPullParserException: binarny wiersz pliku XML nr 6: tag wymaga atrybutu „drawable” lub tagu podrzędnego definiującego element do rysowania
Kiedy zmieniam atrybut na rysowalny, działa, ale wynik wygląda zupełnie nieprawidłowo, ponieważ identyfikatory wydają się być interpretowane jako odniesienia do obrazu, a nie odniesienia do kolorów (jak sugeruje element „do rysowania”).
Wprawia mnie w zakłopotanie, że mogę bezpośrednio ustawić odniesienie koloru, np. „@ Kolor / czarny”, jako atrybut tła. To działa zgodnie z oczekiwaniami. Używanie selektorów nie działa.
Z selektora też mogę korzystać textColor
bez problemów.
Jaki jest prawidłowy sposób zastosowania selektora koloru tła TextView
w systemie Android?