我需要在单击 subview 时更改可扩展 ListView 中 subview 的背景。
子行布局是这样的:
<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 时,我想更改整行的背景(最顶部的相对布局包含在每个 View 中的子布局中)。如何触发顶级相对布局的选择器。
此外,当 OnChildClick() 收到回调时,行的背景会发生变化(因为选择器位于顶级布局中)。
我的尝试是:
在TextView的onlclick方法中:
((RelativeLayout)(nameView.getParent().getParent().getParent())).setPressed(true);
但这不会导致行布局改变背景颜色。
最佳答案
问题:
最终你想从它的 childView 触发 parentView 的选择器。
解决方案
在你的父布局中,添加这一行:
android:addStatesFromChildren="true"
如果您在 java 代码中引用了 parentView,那么您可以使用以下方法完成任务:
parentView.setAddStatesFromChildren(true);
其中,parentView 是您的父布局,即:RelativeLayout
注意:
确保您的 subview 没有复制父级的状态。
即:android:duplicateParentState
或 childView.setDuplicateParentState(true)
希望对您有所帮助!
关于android - 单击子布局中的元素时更改可扩展列表 subview 的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19001946/