2012-04-21 5 views
2

저는 TableRow에 LinearLayout이 있고이 LinearLayout에 TextView가 있습니다. TextView를 클릭하면 전체 TableRow의 배경색이 변경됩니다.자식이 클릭 될 때 부모의 배경색을 변경하십시오.

click 이벤트를 TextView에서 TableRow로 전달하려고 getParent() 및 performClick()을 사용하려고했습니다. TableRow의 onClick() 메서드가 호출되지만 배경색은 변경되지 않습니다.

은 물론 나는 작동하지 않습니다

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

당신이 붙여 넣을 수 있습니다 –

+0

\t \t <항목 안드로이드 : state_focused = "true"로 안드로이드 : 당김 = "@ 드로어 블/menu_item_pressed"/> \t : setBackgroundDrawable에 <항목 안드로이드 당김 = "@ 드로어 블/menu_item_normal"/>

답변

0

이 완전한 xml 파일이

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 변경) () setImageDrawable() TableRow에 없기 때문에. TableRow를 클릭하면 색상이 변경됩니다. 그러나 TextView를 클릭하면 TableRow가 색상을 변경하지 않습니다. 나는 아직도 이것을 얻을 수 없다 ... –

관련 문제