我正在尝试在列表视图中实现网格视图。我想禁用列表视图的触摸,并希望在网格视图上执行触摸事件。怎么做? 我需要这样做,因为我已经在网格视图中实现了我的日历,并且我在列表视图中夸大了我的网格视图。
我正在使用下面的自定义列表活动来禁用滚动和触摸事件但仍然触摸我,因为我将“ListViewTouch”和“ListViewDispatchTouch”的日志作为真值。
public class ScrollDisabledListView extends ListView {
private int mPosition;
public ScrollDisabledListView(Context context) {
super(context);
}
public ScrollDisabledListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ScrollDisabledListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
Log.d("ListViewTouch", "true");
return true;
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Log.d("ListViewDispatchTouch", "true");
final int actionMasked = ev.getActionMasked() & MotionEvent.ACTION_MASK;
if (actionMasked == MotionEvent.ACTION_DOWN) {
// Record the position the list the touch landed on
mPosition = pointToPosition((int) ev.getX(), (int) ev.getY());
return super.dispatchTouchEvent(ev);
}
if (actionMasked == MotionEvent.ACTION_MOVE) {
// Ignore move events
return true;
}
if (actionMasked == MotionEvent.ACTION_UP) {
// Check if we are still within the same view
if (pointToPosition((int) ev.getX(), (int) ev.getY()) == mPosition) {
super.dispatchTouchEvent(ev);
} else {
// Clear pressed state, cancel the action
setPressed(false);
invalidate();
return true;
}
}
return super.dispatchTouchEvent(ev);
}
答案 0 :(得分:0)
尝试将此属性添加到布局文件中的ListView:android:clickable="false"
。
答案 1 :(得分:0)
android:descendantFocusability="blocksDescendants"
在gridview
的{{1}}文件中添加此内容。应该这样做。
像这样:
XML