2012-04-21 2 views
2

У меня есть TableRow, который содержит LinearLayout, а затем этот LinearLayout содержит TextView. Я хочу, чтобы после щелчка TextView весь TableRow изменил свой цвет фона.Изменить цвет фона родителя при щелчке его дочернего элемента

Я попытался использовать getParent() и выполнитьClick(), чтобы передать событие click из TextView в TableRow. Метод onClick() TableRow вызывает вызов, но его цвет фона не изменяется.

Конечно я поставил селектор, используя либо

row.setBackgroundResource(R.drawable.menu_item_bgcolor); 

или

row.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.menu_item_bgcolor)); 

не работает. Может ли кто-нибудь объяснить это? Спасибо,

Ниже файл Селектор XML:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="true" android:drawable="@drawable/menu_item_pressed" /> 
<item android:state_focused="true" android:drawable="@drawable/menu_item_pressed" /> 
<item android:drawable="@drawable/menu_item_normal" /> 

</selector> 
+0

вы можете вставить ваш полный XML файл –

+0

\t \t <элемент андроид: state_focused = "истинный" андроид: рисую = "@ вытяжка/menu_item_pressed" /> \t <элемента андроид: рисую = "@ вытяжка/menu_item_normal" />

ответ

0

попробовать это

StateListDrawable states = new StateListDrawable(); 
states.addState(new int[] {android.R.attr.state_pressed}, 
    getResources().getDrawable(R.drawable.pressed)); 
states.addState(new int[] {android.R.attr.state_focused}, 
    getResources().getDrawable(R.drawable.focused)); 
states.addState(new int[] { }, 
    getResources().getDrawable(R.drawable.normal)); 
row.setImageDrawable(states); 
+0

меняет setImageDrawable() для setBackgroundDrawable (), потому что setImageDrawable() не существует на TableRow. Когда я нажимаю TableRow, он меняет цвет. Но когда я нажимаю TextView, TableRow не меняет цвет. Я все еще не могу получить это ... –

Смежные вопросы