我在最左边的位置有一个ImageView内部。它具有所有状态(按下、选定、聚焦、正常)。如果我单击但不是在某些设备中,则调用悬停状态(选定、聚焦、按下)。所以我想知道如何避免这种情况。listviewimageViewlistViewListViewImageViewImageView
2 回答
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)中的效果相同。这允许行是可点击的。override 方法解决了您在此处提到的问题,即(父)中的按下事件波及(子)。android:focusable="false"xmlListViewonPressedListViewImageView
一旦你定义了这个类,你可以ImageView在你的xml布局中用com.MYCOMPANY.MYAPP.NoParentPressImageView. 编译并运行,ListView现在应该按预期运行,ImageView按下事件仅在您实际单击图像时触发,而不是在您单击行中的其他位置时触发。
于 2013-02-26T18:30:22.827 回答
-1
尝试添加android:focusable="false"到ImageView您的布局文件中。
于 2013-02-14T07:19:28.423 回答