假设我有一个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
How disable ScrollView - 这个不会做,因为ScrollView和NumberPicker都是垂直的
我真的很感激任何好的解决方案或方向...... 先感谢您, 标记
答案 0 :(得分: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;
}
});