2012-04-21 10 views
2

私はLinearLayoutを含むTableRowを持っていて、このLinearLayoutにはTextViewが含まれています。私が望むのは、TextViewをクリックすると、TableRow全体がその背景色を変更するということです。子がクリックされたときに親の背景色を変更します

私は、TextViewからClickイベントを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 <商品のandroid:描画可能= "描画可能/ 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は色を変更しません。私はまだこれを得ることができません... –

関連する問題