我的最左侧位置ImageView
内listview
。imageView
和listView
包含所有状态(按下,选中,聚焦,正常)。如果点击ListView
但不是ImageView
然后在某些设备中调用ImageView
的悬停状态(选中,聚焦,按下)。
所以我想知道如何避免这种情况。
答案 0 :(得分:1)
以下是解决此问题的步骤。使用以下代码创建名为NoParentPressImageView
的类:
public class NoParentPressImageView extends ImageView {
public NoParentPressImageView(Context context) {
this(context, null);
this.setFocusable(false);
}
public NoParentPressImageView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setFocusable(false);
}
@Override
public void setPressed(boolean pressed) {
// If the parent is pressed, do not set to pressed.
if (pressed && ((View) getParent()).isPressed()) {
return;
}
super.setPressed(pressed);
}
}
请注意,构造函数中的setFocusable(false)
与将android:focusable="false"
添加到xml
布局文档具有相同的效果。这允许ListView
行可单击。 onPressed
覆盖方法解决了您在此提及的问题,即在ListView
(父级)中按下事件,直至ImageView
(子)。
定义此类后,您可以使用ImageView
替换xml
布局中的com.MYCOMPANY.MYAPP.NoParentPressImageView
。编译并运行,ListView
现在应该按预期运行,ImageView
按下的事件仅在您实际点击图像时触发,而不是在您单击行中的其他位置时触发。
答案 1 :(得分:-1)
尝试将android:focusable="false"
添加到布局文件中的ImageView
。