单击子级时,我需要在可扩展列表视图中更改子级视图的背景。

子行的布局类似于:

<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:duplicateParentStatechildView.setDuplicateParentState(true)

希望对您有所帮助!

07-24 09:47
查看更多