我在最左边的位置有一个ImageView
内部。它具有所有状态(按下、选定、聚焦、正常)。如果我单击但不是在某些设备中,则调用悬停状态(选定、聚焦、按下)。所以我想知道如何避免这种情况。listview
imageView
listView
ListView
ImageView
ImageView
问问题
664 次
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"
xml
ListView
onPressed
ListView
ImageView
一旦你定义了这个类,你可以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 回答