有人可以帮助我使用Android移动应用程序中的ScrolView。我的问题 - 在我的垂直ScrollView上我有水平的“hlistview”,当我移动“hlistview”上/下/右/左只玩一个。他们怎么样一起工作?当时只工作一个。
hListView.setOnTouchListener(new HorizontalListView.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
v.getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
v.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
v.onTouchEvent(event);
return true;
}
});
答案 0 :(得分:1)
在嵌套滚动视图中,您必须拦截触摸事件。但是,如果您在ACTION_DOWN上只是requestDisallowInterceptTouchEvent
,那么当您的手指触摸屏幕时,您正在使其父级禁用触摸事件。这不是通缉行为。您需要设置一个阈值,并且只在滚动距离达到该阈值时才禁止事件。
在嵌套的scrollview ACTION_DOWN上设置一个保存初始X(用于水平滑动)的字段,如下所示:
mLastX = event.getX();
接下来在ACTION_MOVE上将其与您的阈值(本例中为50)进行比较
if (Math.abs(event.getX() - mLastX) > 50)
requestDisallowInterceptTouchEvent(true);