1

假设我有一个 LinearLayout(垂直)的 ScrollView,里面有一个 NumberPicker。此外,LinearLayout 确实包含足够的小部件,因此它可以滚动。

下面是一个示例 XML 代码片段:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <!-- Some widgets here so it scrolls -->

    <NumberPicker
                android:id="@+id/npSec"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

</LinearLayout>

在 Android 4.1.2 (Galaxy S3) 上它工作得很好......您滚动布局并滚动 NumberPicker - 只有 NumberPicker 滚动。

另一方面,在 Android 4.0.x 上,布局滚动得很好,但是当 NumberPicker 尝试滚动时,它会做一些尴尬的事情,比如滚动一半值并在值之间停止;从那里 - 只有 LinearLayout 被滚动并且 NumberPicker 被卡住。

这家伙问了完全相同的问题,但没有得到任何答案:NumberPicker on ScrollView doesn't scroll on Android 4.0.4

如何禁用 ScrollView - 这个不能完成这项工作,因为 ScrollView 和 NumberPicker 都是垂直的

我将非常感谢任何好的解决方案或方向......提前谢谢你,马克。

4

1 回答 1

2

我知道这是一个老问题,仍然......

这对我有用:

numberPicker.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(final View v, final MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_MOVE && v.getParent() != null) {
                v.getParent().requestDisallowInterceptTouchEvent(true);
            }
            if (event.getAction() == MotionEvent.ACTION_UP) {
                v.performClick();
            }

            v.onTouchEvent(event);
            return true;
        }
    });
于 2015-02-18T14:00:48.663 回答