2017-02-17 64 views
-1

基本上我不能在日期选择器中滚动的月份和年份,因为滚动视图是一个滚动。如何滚动DatePicker时放置在滚动视图

<DatePicker 
      android:layout_width="match_parent" 
      android:id="@+id/datePicker5" 
      android:layout_weight="3.61" 
      android:layout_height="match_parent" /> 

我需要添加什么?谢谢

我也有这个代码btw。

private void addPet(){ 
    LayoutInflater layoutInflaterAndroid = LayoutInflater.from(c); 
    View mView = layoutInflaterAndroid.inflate(R.layout.add_pet_dialog, null); 
    AlertDialog.Builder alertDialogBuilderUserInput = new AlertDialog.Builder(c); 
    alertDialogBuilderUserInput.setView(mView); 


    final EditText userInputDialogEditText = (EditText) mView.findViewById(R.id.pet_name); 
    final DatePicker date_picker = (DatePicker) mView.findViewById(R.id.datepick); 
    date_picker.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) 
     { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       // Disallow the touch request for parent scroll on touch of datepicker view 
       requestDisallowParentInterceptTouchEvent(v, true); 
      } 
      else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { 
       // Re-allows parent events 
       requestDisallowParentInterceptTouchEvent(v, false); 
      } 
      return false; 
     } 
    }); 



     alertDialogBuilderUserInput 
      .setCancelable(false) 
      .setPositiveButton("Send", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialogBox, int id) { 
        // ToDo get user input here 
       } 
      }) 

      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialogBox, int id) { 
          dialogBox.cancel(); 
         } 
        }); 

    AlertDialog alertDialogAndroid = alertDialogBuilderUserInput.create(); 
    alertDialogAndroid.show(); 


} 



private void requestDisallowParentInterceptTouchEvent(View v, Boolean disallowIntercept) { 
    while (v.getParent() != null && v.getParent() instanceof View) { 
     if (v.getParent() instanceof ScrollView) { 
      v.getParent().requestDisallowInterceptTouchEvent(disallowIntercept); 
     } 
     v = (View) v.getParent(); 
    } 
} 

我不知道为什么它仍然不工作请帮助。

回答

1

在另一个可滚动视图中放置可滚动视图并不是一个好习惯。然而,要解决这个问题,你将不得不禁用父滚动视图,而用户正在与日期选择器交互,像这样 -

date_picker.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) 
    { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     // Disallow the touch request for parent scroll on touch of datepicker view 
     requestDisallowParentInterceptTouchEvent(v, true); 
    } 
    else if (event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL) { 
    // Re-allows parent events 
    requestDisallowParentInterceptTouchEvent(v, false); 
    } 
    return false; 
    } 
    }); 


private void requestDisallowParentInterceptTouchEvent(View v, Boolean disallowIntercept) { 
    while (v.getParent() != null && v.getParent() instanceof View) { 
     if (v.getParent() instanceof ScrollView) { 
      v.getParent().requestDisallowInterceptTouchEvent(disallowIntercept); 
     } 
     v = (View) v.getParent(); 
    } 
} 
+0

仍然无法正常工作。 –

+0

@ Dr.DOOM你能分享你的完整xml文件吗? – Basanth

相关问题