滚动视图中的 Android 5.0 Datepicker 不起作用(不滚动月份)
Posted
技术标签:
【中文标题】滚动视图中的 Android 5.0 Datepicker 不起作用(不滚动月份)【英文标题】:Android 5.0 Datepicker in scrollview not working (not scrolling months) 【发布时间】:2015-06-05 20:19:03 【问题描述】:我在片段中实现了新的日期选择器。这包含在滚动视图中。当尝试使用 datepicker 时,我必须单击并按住屏幕上的某个位置,然后才能滚动 datepickers calader 让我们说可能。
有没有办法解决这个问题?
我正在使用这个时间选择器:
我像这样加载它:
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/scrollView2"
android:layout_row="11"
android:fillViewport="true"
android:background="#162229"
android:layout_column="2"
android:paddingBottom="20dp">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_
android:layout_
android:gravity="center"
android:background="#162229"
android:orientation="vertical" >
<DatePicker
android:id="@+id/datePicker1"
android:layout_
android:background="#162229"
android:calendarTextColor="#fff"
android:layout_
android:calendarViewShown="false" > <!-- style="@style/date_picker_style" -->
</DatePicker>
</LinearLayout>
</ScrollView>
【问题讨论】:
我遇到了同样的问题,不幸的是我不得不使用 DatePickerDialog 并且它可以正常工作。 Good example 和 another example 我也有同样的问题。那一次我用 **bold'android:datePickerMode="spinner"' ** 来避免这个问题。但外观和感觉不会得到 我最好的猜测是 scrollview 父级正在捕获手势,并且它们需要在 ScrollView 获取它们之前由 DatePicker 处理。恐怕我也可能会选择 DatePickerDialog 选项。 【参考方案1】:创建一个扩展 DatePicker 的类并覆盖以下方法:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN)
ViewParent p = getParent();
if (p != null)
p.requestDisallowInterceptTouchEvent(true);
return false;
它会正常工作的。 来源:here
【讨论】:
【参考方案2】:这是因为父 ScrollView 组件。删除滚动视图或使用日期选择器对话框。
【讨论】:
【参考方案3】:对我来说,这很有用: How to disable and enable the scrolling on android ScrollView?
您在适当时锁定的自定义滚动视图
【讨论】:
以上是关于滚动视图中的 Android 5.0 Datepicker 不起作用(不滚动月份)的主要内容,如果未能解决你的问题,请参考以下文章