单击子级时,我需要在可扩展列表视图中更改子级视图的背景。
子行的布局类似于:
<RelativeLayout> //Selector is placed for this layout
....
<RelativeLayout>
....
<RelativeLayout>
....
<TextView>
....
....
选择器:
<?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/greyish"/>
</selector>
现在,当我单击TextView时,我想更改整个行的背景(最上层的相对布局包括在每个具有子布局的视图上)。我如何触发顶级相对布局的选择器。
另外,当OnChildClick()收到回调时,行的背景也会更改(由于选择器放置在顶层布局中)。
我的尝试是:
在TextView的onlclick方法中:
((RelativeLayout)(nameView.getParent().getParent().getParent())).setPressed(true);
但这不会导致行布局更改背景颜色。
最佳答案
问题:
最终,您想从其childView触发parentView的选择器。
解
在您的父布局中,添加以下行:
android:addStatesFromChildren="true"
如果您在Java代码中具有parentView的引用,则可以通过使用以下命令完成任务:
parentView.setAddStatesFromChildren(true);
其中,parentView是您的父级布局,即:
RelativeLayout
注意:
确保您的子视图不会复制父项的状态。
即:
android:duplicateParentState
或childView.setDuplicateParentState(true)
希望对您有所帮助!