2017-02-17 2 views
-1

スクロールビューが1つのスクロールであるため、基本的には月と年をdatepickerでスクロールできませんでした。スクロールビューに配置されたときに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

関連する問題