不工作ScrollView和Horizo​​ntalListView

时间:2014-10-01 13:38:21

标签: android scrollview

有人可以帮助我使用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;
        }
    });

1 个答案:

答案 0 :(得分:1)

在嵌套滚动视图中,您必须拦截触摸事件。但是,如果您在ACTION_DOWN上只是requestDisallowInterceptTouchEvent,那么当您的手指触摸屏幕时,您正在使其父级禁用触摸事件。这不是通缉行为。您需要设置一个阈值,并且只在滚动距离达到该阈值时才禁止事件。

在嵌套的scrollview ACTION_DOWN上设置一个保存初始X(用于水平滑动)的字段,如下所示:

mLastX = event.getX();

接下来在ACTION_MOVE上将其与您的阈值(本例中为50)进行比较

if (Math.abs(event.getX() - mLastX) > 50)
          requestDisallowInterceptTouchEvent(true);