在Android中,当用户水平滚动时禁用垂直滚动

3

我有一个垂直自定义列表,每个垂直列表项都包含一个水平列表视图。当我水平滚动时,列表也会稍微向上或向下移动。这使得用户体验变差。我能否在水平滚动时禁用垂直滚动?我正在使用

<com.devsmart.android.ui.HorizontalListView
        android:id="@+id/hlistview"
        android:layout_width="match_parent"
        android:layout_height="155dp"
        android:layout_margin="6dp"
        android:background="#fff"
        android:fitsSystemWindows="true"
    />

为了实现横向列表视图

嗨,尝试一下Shivam Verma发布的答案。它是有效的,但是当从HorizontalListView区域向上或向下滑动时,HLV只会滚动。如果您有其他解决方案,请分享。 - Karthikeyan Ve
为什么不试试TwoWayView - Umesh
2个回答

6
这个想法是禁用父级列表视图来拦截触摸事件。这可能有效:
HorizontalListView hv = (HorizontalListView)findViewById(R.id.hlistview);  
    hv.setOnTouchListener(new ListView.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                switch (action) {
                case MotionEvent.ACTION_DOWN:
                    // Disallow ListView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                    break;

                case MotionEvent.ACTION_UP:
                    // Allow ListView to intercept touch events.
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                    break;
                }

                // Handle HorizontalScrollView touch events.
                v.onTouchEvent(event);
                return true;
            }
        });

参考资料: https://stackoverflow.com/a/22609646/1239966

该链接提供了一种使用JavaScript将文本复制到剪贴板的方法。它使用document.execCommand('copy')方法来执行复制操作,并且为了兼容性,需要在用户触发事件的处理程序中调用该方法(例如,在单击按钮时)。


您不需要手动重置requestDisallowInterceptTouchEvent标志。它会自动重置。根据文档:“父视图必须在触摸期间遵守此请求。” https://developer.android.com/reference/android/view/ViewParent#requestDisallowInterceptTouchEvent(boolean) - Ed Lee

0

实现此功能的最佳方式。

将给定代码放置在您的水平ListView onScroll方法中,它可以完美工作。

ViewParent view_parent = getParent();
if (view_parent != null) 
{
 view_parent.requestDisallowInterceptTouchEvent(true);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接