(但是4.2.3不會發生!而我推測或許3.x以上~4.0.4以下的device都會發生)
如下圖,
你會發現經過scrolling以後,在年/月/日的三個欄位,位置都怪怪的
原因是因為在做position時,那個event是被parent截取到!
但理應上應該是DatePicker截取到才對!
所以workaround就是,自己定義一個class,以及extend DatePicker!
然後去取消parent截取event!
public class CustomDatePicker extends DatePicker {
public CustomDatePicker(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomDatePicker(Context context) {
super(context);
}
@SuppressLint("NewApi")
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
/*
* Prevent parent component intercept touch event.
* because only happened on Android 3.x ~ 4.0.4, so we need to check the current os version.
*/
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
if (ev.getActionMasked() == MotionEvent.ACTION_DOWN) {
ViewParent p = getParent();
if (p != null){
// disallow its parent intercept touch event.
p.requestDisallowInterceptTouchEvent(true);
}
}
}
return false;
}
}
而使用方式就是在你的layout.xml中指定我們上方定義的class,
<view android:id="@+id/share_expires"
android:layout_width="fill_parent"
android:visibility="gone"
android:layout_height="wrap_content"
class="net.kenyang.util.CustomDatePicker" >
</view>
這樣就能解決scrolling的問題!