StateListDrawable не работает на TableRow
Я пытаюсь заставить TableRow в TableLayout изменить цвет фона, когда пользователь касается его, но, похоже, он не работает. Когда я нажимаю на TableRow, ничего не происходит. Это то, что у меня так далеко:
Планировка:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/BaseStyle"
android:stretchColumns="*">
<TableRow style="@style/TableRow">
<TextView
android:id="@+id/settings
style="@style/BaseStyle.SettingsText"
android:text="Settings"
android:onClick="onClick"
android:clickable="true"
/>
</TableRow>
</TableLayout>
Стиль:
<style name="TableRow">
<item name="android:background">@drawable/onclickhighlight</item>
</style>
Drawable (onclickhighlight.xml)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Active state -->
<item android:state_selected="true" android:state_focused="false" android:state_pressed="false" android:drawable="@android:color/background_light" />
<!-- Inactive state-->
<item android:state_selected="false" android:state_focused="false" android:state_pressed="false" android:drawable="@android:color/transparent" />
<!-- Pressed state-->
<item android:state_selected="true" android:state_focused="true" android:state_pressed="true" android:drawable="@android:color/background_light" />
</selector>
Цвета:
<resources>
<color name="background_light">#FFFFFF</color>
</resources>
Я знаю, что TableRow использует onclickhighlight StateListDrawable, потому что если я изменю свойство android: drawable в "Неактивном состоянии" с @android:color/transparent на @android:color/background_light, цвет фона изменится на белый.
2 ответа
У меня была такая же проблема, и это то, что сработало для меня.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/yourcolor" />
<item android:drawable="@color/yournormalbackground"/>
</selector>
У меня точно такая же проблема, и я пытаюсь найти ответ. Могу поспорить, если вы удалите android:onClick="onClick"
из строки xml таблицы вы обнаружите, что подсветка будет работать. Но тогда как бы вы получили событие click, чтобы связать его с нужным вам методом?!