Gesture-Recognizer reagiert nicht/sporadisch

L

Lybrial

Neues Mitglied
0
Hallo,

ich habe versucht einen eigenen Date-Picker zu implementieren, da man
den vorhanden leider nicht in der Art anpassen kann, dass er aussieht,
wie er von meinem Designer aus aussehen muss, nämlich wie folgt:

yim_Rm.jpg


Die Tage, Monate und Jahre sollen durch nach oben bzw. nach unten
scrollen veränderbar sein. Hierzu habe ich folgendes Layout geschrieben:

Code:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:fillViewport="true"
    android:gravity="center" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"
            android:layout_marginStart="40dp"
            android:layout_marginEnd="40dp"
            android:background="@drawable/custom_background"
            android:gravity="center"
            android:orientation="vertical" >

            <TextView
                android:id="@+id/date_selection_textview_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="20dp"
                android:gravity="center"
                android:textColor="@color/textcolorprimary"
                android:textSize="20sp" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:baselineAligned="false"
                android:gravity="center"
                android:orientation="horizontal" >

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_marginStart="5dp"
                    android:layout_weight="0.8"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />

                    <TextView
                        android:id="@+id/date_selection_textview_from"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center"
                        android:textColor="@color/textcolorprimary" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/date_selection_layout_from_day"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1.0"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginBottom="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp" />
                    </LinearLayout>

                    <EditText
                        android:id="@+id/date_selection_edittext_from_day"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@drawable/custom_background"
                        android:gravity="center"
                        android:inputType="number"
                        android:maxLines="1"
                        android:nextFocusDown="@+id/date_selection_edittext_from_month"
                        android:paddingBottom="5dp"
                        android:paddingTop="5dp"
                        android:singleLine="true"
                        android:textColor="@color/textcolorprimary"
                        android:textSize="20sp" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp"
                            android:rotation="180" />
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/date_selection_layout_from_month"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1.0"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginBottom="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp" />
                    </LinearLayout>

                    <EditText
                        android:id="@+id/date_selection_edittext_from_month"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@drawable/custom_background"
                        android:gravity="center"
                        android:inputType="number"
                        android:maxLines="1"
                        android:nextFocusDown="@+id/date_selection_edittext_from_year"
                        android:paddingBottom="5dp"
                        android:paddingTop="5dp"
                        android:singleLine="true"
                        android:textColor="@color/textcolorprimary"
                        android:textSize="20sp" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp"
                            android:rotation="180" />
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/date_selection_layout_from_year"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1.0"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginBottom="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp" />
                    </LinearLayout>

                    <EditText
                        android:id="@+id/date_selection_edittext_from_year"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@drawable/custom_background"
                        android:gravity="center"
                        android:inputType="number"
                        android:maxLines="1"
                        android:nextFocusDown="@+id/date_selection_edittext_to_day"
                        android:paddingBottom="5dp"
                        android:paddingTop="5dp"
                        android:singleLine="true"
                        android:textColor="@color/textcolorprimary"
                        android:textSize="20sp" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp"
                            android:rotation="180" />
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="0.8"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />
                </LinearLayout>
            </LinearLayout>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_gravity="center"
                android:layout_marginStart="40dp"
                android:layout_marginEnd="40dp"
                android:background="@android:color/darker_gray" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:baselineAligned="false"
                android:gravity="center"
                android:orientation="horizontal" >

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_marginStart="5dp"
                    android:layout_weight="0.8"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />

                    <TextView
                        android:id="@+id/date_selection_textview_to"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center"
                        android:textColor="@color/textcolorprimary" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/date_selection_layout_to_day"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1.0"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginBottom="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp" />
                    </LinearLayout>

                    <EditText
                        android:id="@+id/date_selection_edittext_to_day"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@drawable/custom_background"
                        android:gravity="center"
                        android:inputType="number"
                        android:maxLines="1"
                        android:nextFocusDown="@+id/date_selection_edittext_to_month"
                        android:paddingBottom="5dp"
                        android:paddingTop="5dp"
                        android:singleLine="true"
                        android:textColor="@color/textcolorprimary"
                        android:textSize="20sp" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp"
                            android:rotation="180" />
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/date_selection_layout_to_month"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1.0"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginBottom="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp" />
                    </LinearLayout>

                    <EditText
                        android:id="@+id/date_selection_edittext_to_month"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@drawable/custom_background"
                        android:gravity="center"
                        android:inputType="number"
                        android:maxLines="1"
                        android:nextFocusDown="@+id/date_selection_edittext_to_year"
                        android:paddingBottom="5dp"
                        android:paddingTop="5dp"
                        android:singleLine="true"
                        android:textColor="@color/textcolorprimary"
                        android:textSize="20sp" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp"
                            android:rotation="180" />
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/date_selection_layout_to_year"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="1.0"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginBottom="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp" />
                    </LinearLayout>

                    <EditText
                        android:id="@+id/date_selection_edittext_to_year"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@drawable/custom_background"
                        android:gravity="center"
                        android:inputType="number"
                        android:maxLines="1"
                        android:paddingBottom="5dp"
                        android:paddingTop="5dp"
                        android:singleLine="true"
                        android:textColor="@color/textcolorprimary"
                        android:textSize="20sp" />

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginTop="2dp"
                        android:gravity="center" >

                        <ImageView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:background="@drawable/ic_button_arrow"
                            android:contentDescription="@string/imageview_description"
                            android:gravity="center"
                            android:padding="5dp"
                            android:rotation="180" />
                    </LinearLayout>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginEnd="5dp"
                    android:layout_weight="0.8"
                    android:gravity="center"
                    android:orientation="vertical" >

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />

                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:gravity="center" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>

        <Button
            android:id="@+id/date_selection_button_request"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"
            android:layout_marginEnd="40dp"
            android:layout_marginStart="40dp"
            android:background="@drawable/custom_positive_button"
            android:gravity="center"
            android:padding="15dp"
            android:text="@string/button_request"
            android:textColor="@drawable/custom_positive_button_text_color"
            android:textSize="20sp" />

        <Button
            android:id="@+id/date_selection_button_cancel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"
            android:layout_marginEnd="40dp"
            android:layout_marginStart="40dp"
            android:background="@drawable/custom_negative_button"
            android:gravity="center"
            android:padding="15dp"
            android:text="@string/button_cancel"
            android:textColor="@drawable/custom_negative_button_text_color"
            android:textSize="20sp" />

    </LinearLayout>

</ScrollView>

Der Code dazu ist der folgende:

Code:
public class DateSelectionDialogFragment extends BaseDialogFragment implements OnClickListener, OnTouchListener, OnGestureListener {
	private GestureDetector gestureDetector = null;
	private DateSelectionCallback callback = null;
	private LinearLayout layoutFromDay = null;
	private LinearLayout layoutFromMonth = null;
	private LinearLayout layoutFromYear = null;
	private LinearLayout layoutToDay = null;
	private LinearLayout layoutToMonth = null;
	private LinearLayout layoutToYear = null;
	private TextView textViewTitle = null;
	private TextView textViewFrom = null;
	private EditText editTextFromDay = null;
	private EditText editTextFromMonth = null;
	private EditText editTextFromYear = null;
	private TextView textViewTo = null;
	private EditText editTextToDay = null;
	private EditText editTextToMonth = null;
	private EditText editTextToYear = null;
	private Button buttonRequest = null;
	private Button buttonCancel = null;
	
	public DateSelectionDialogFragment(DateSelectionCallback callback) {
		this.callback = callback;
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		this.setRetainInstance(true);
		this.gestureDetector = new GestureDetector(this.activity, this);
	}

	@SuppressLint("InflateParams")
	@Override
	public Dialog onCreateDialog(Bundle savedInstanceState) {
		final Dialog dialog = new Dialog(this.activity, android.R.style.Theme_Translucent_NoTitleBar);
        final View view = this.activity.getLayoutInflater().inflate(R.layout.activity_date_selection_fragment, null);
        
        this.layoutFromDay = (LinearLayout) view.findViewById(R.id.date_selection_layout_from_day);
        this.layoutFromDay.setOnTouchListener(this);
        this.layoutFromMonth = (LinearLayout) view.findViewById(R.id.date_selection_layout_from_month);
        this.layoutFromMonth.setOnTouchListener(this);
        this.layoutFromYear = (LinearLayout) view.findViewById(R.id.date_selection_layout_from_year);
        this.layoutFromYear.setOnTouchListener(this);
        this.layoutToDay = (LinearLayout) view.findViewById(R.id.date_selection_layout_to_day);
        this.layoutToDay.setOnTouchListener(this);
        this.layoutToMonth = (LinearLayout) view.findViewById(R.id.date_selection_layout_to_month);
        this.layoutToMonth.setOnTouchListener(this);
        this.layoutToYear = (LinearLayout) view.findViewById(R.id.date_selection_layout_to_year);
        this.layoutToYear.setOnTouchListener(this);
        
        this.textViewTitle = (TextView) view.findViewById(R.id.date_selection_textview_title);
        this.textViewTitle.setText(this.getResources().getString(R.string.title_activity_measure_data_list));
        this.textViewFrom = (TextView) view.findViewById(R.id.date_selection_textview_from);
        this.textViewFrom.setText(this.getResources().getString(R.string.text_from));
        this.editTextFromDay = (EditText) view.findViewById(R.id.date_selection_edittext_from_day);
        this.editTextFromDay.setEnabled(false);
        this.editTextFromMonth = (EditText) view.findViewById(R.id.date_selection_edittext_from_month);
        this.editTextFromMonth.setEnabled(false);
        this.editTextFromYear = (EditText) view.findViewById(R.id.date_selection_edittext_from_year);
        this.editTextFromYear.setEnabled(false);
        this.textViewTo = (TextView) view.findViewById(R.id.date_selection_textview_to);
        this.textViewTo.setText(this.getResources().getString(R.string.text_to));
        this.editTextToDay = (EditText) view.findViewById(R.id.date_selection_edittext_to_day);
        this.editTextToDay.setEnabled(false);
        this.editTextToMonth = (EditText) view.findViewById(R.id.date_selection_edittext_to_month);
        this.editTextToMonth.setEnabled(false);
        this.editTextToYear = (EditText) view.findViewById(R.id.date_selection_edittext_to_year);
        this.editTextToYear.setEnabled(false);
		this.buttonRequest = (Button) view.findViewById(R.id.date_selection_button_request);
		this.buttonRequest.setOnClickListener(this);
		this.buttonCancel = (Button) view.findViewById(R.id.date_selection_button_cancel);
		this.buttonCancel.setOnClickListener(this);
		
		this.initViews();

		dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        dialog.getWindow().setBackgroundDrawable(Helper.loadDrawableFromFile(this.getResources(), Helper.getBackgroundBlurredImagePath()));
        dialog.getWindow().setContentView(view);

        final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
        
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.height = WindowManager.LayoutParams.MATCH_PARENT;
        params.gravity = Gravity.CENTER;

        dialog.setCanceledOnTouchOutside(true);

        return dialog;
	}

	@Override
	public void onDestroyView() {
		if (this.getDialog() != null && this.getRetainInstance()) {
			this.getDialog().setDismissMessage(null);
		}
		
		super.onDestroyView();
	}

	@Override
	public void onDismiss(DialogInterface dialog) {
		super.onDismiss(dialog);
	}

	@Override
	public void onResume() {
		super.onResume();
	}
	
	@Override
	public void onClick(View view) {
		switch(view.getId()) {
			case  R.id.date_selection_button_request : {
				this.performSetDate();
			} break;
			case R.id.date_selection_button_cancel : {
				this.performCancel();
			} break;
		}
	}
	
	@SuppressLint("ClickableViewAccessibility")
	@Override
	public boolean onTouch(View view, MotionEvent motionEvent) {
		motionEvent.setSource(view.getId());
		
		Log.v("DateSelectionDialogFragment", "On Touch Called");
		
		return this.gestureDetector.onTouchEvent(motionEvent);
	}
	
	@Override
	public boolean onDown(MotionEvent motionEvent) {
		return true;
	}

	@Override
	public boolean onFling(MotionEvent motionEvent1, MotionEvent motionEvent2, float distanceX, float distanceY) {
		return true;
	}

	@Override
	public void onLongPress(MotionEvent motionEvent) {
		return;
	}

	@Override
	public boolean onScroll(MotionEvent motionEvent1, MotionEvent motionEvent2, float velocityX, float velocityY) {
		LinearLayout sourceView = this.getSourceView(motionEvent1.getSource());
		
		Log.v("DataSelectionDialogFragment", "OnScroll Called");
		
		if(sourceView != null) {
			if(motionEvent1.getY() > motionEvent2.getY() && velocityY > 20) {
				
				Log.v("DataSelectionDialogFragment", "Scroll Up");
				if(sourceView.equals(this.layoutFromDay)) {
					int currentValue = Integer.parseInt(this.editTextFromDay.getText().toString());
					
					if(currentValue < 31) {
						this.editTextFromDay.setText("" + ++currentValue);
					}
				} else if(sourceView.equals(layoutToDay)) {
					int currentValue = Integer.parseInt(this.editTextToDay.getText().toString());
					
					if(currentValue < 31) {
						this.editTextToDay.setText("" + ++currentValue);
					}
				} else if(sourceView.equals(layoutFromMonth)) {
					int currentValue = Integer.parseInt(this.editTextFromMonth.getText().toString());
					
					if(currentValue < 12) {
						this.editTextFromMonth.setText("" + ++currentValue);
					}
				} else if(sourceView.equals(layoutToMonth)) {
					int currentValue = Integer.parseInt(this.editTextToMonth.getText().toString());
					
					if(currentValue < 12) {
						this.editTextToMonth.setText("" + ++currentValue);
					}
				} else if(sourceView.equals(layoutFromYear)) {
					int currentValue = Integer.parseInt(this.editTextFromYear.getText().toString());
					
					this.editTextFromYear.setText("" + ++currentValue);
				} else if(sourceView.equals(layoutToYear)) {
					int currentValue = Integer.parseInt(this.editTextToYear.getText().toString());
					
					this.editTextToYear.setText("" + ++currentValue);
				}
			} else if(motionEvent1.getY() < motionEvent2.getY() && velocityY < 20) {
				Log.v("DataSelectionDialogFragment", "Scroll Down");
				
				if(sourceView.equals(this.layoutFromDay)) {
					int currentValue = Integer.parseInt(this.editTextFromDay.getText().toString());
					
					if(currentValue > 1) {
						this.editTextFromDay.setText("" + --currentValue);
					}
				} else if(sourceView.equals(layoutToDay)) {
					int currentValue = Integer.parseInt(this.editTextToDay.getText().toString());
					
					if(currentValue > 1) {
						this.editTextToDay.setText("" + --currentValue);
					}
				} else if(sourceView.equals(layoutFromMonth)) {
					int currentValue = Integer.parseInt(this.editTextFromMonth.getText().toString());
					
					if(currentValue > 1) {
						this.editTextFromMonth.setText("" + --currentValue);
					}
				} else if(sourceView.equals(layoutToMonth)) {
					int currentValue = Integer.parseInt(this.editTextToMonth.getText().toString());
					
					if(currentValue > 1) {
						this.editTextToMonth.setText("" + --currentValue);
					}
				} else if(sourceView.equals(layoutFromYear)) {
					int currentValue = Integer.parseInt(this.editTextFromYear.getText().toString());
					
					if(currentValue > 1970) {
						this.editTextFromYear.setText("" + --currentValue);
					}
				} else if(sourceView.equals(layoutToYear)) {
					int currentValue = Integer.parseInt(this.editTextToYear.getText().toString());
					
					if(currentValue > 1970) {
						this.editTextToYear.setText("" + --currentValue);
					}
				}
			}
		}

		return true;
	}

	@Override
	public void onShowPress(MotionEvent motionEvent) {
		return;
	}

	@Override
	public boolean onSingleTapUp(MotionEvent motionEvent) {
		return true;
	}
	
	private void initViews() {
		final Calendar calendar = Calendar.getInstance();
		int year = calendar.get(Calendar.YEAR);
		int month = (calendar.get(Calendar.MONTH) + 1);
		int day = calendar.get(Calendar.DAY_OF_MONTH);
		
		this.editTextFromDay.setText("" + day);
		this.editTextFromMonth.setText("" + month);
		this.editTextFromYear.setText("" + (year - 1));
		this.editTextToDay.setText("" + day);
		this.editTextToMonth.setText("" + month);
		this.editTextToYear.setText("" + year);
	}
	
	private void performSetDate() {
		String fromYear = this.editTextFromYear.getText().toString();
		String fromMonth = this.editTextFromMonth.getText().toString();
		String fromDay = this.editTextFromDay.getText().toString();
		String toYear = this.editTextToYear.getText().toString();
		String toMonth = this.editTextToMonth.getText().toString();
		String toDay = this.editTextToDay.getText().toString();
		
		String fromDate = fromDay + "." + fromMonth + "." + fromYear;
		String toDate = toDay + "." + toMonth + "." + toYear;
		
		if(Validation.validateDate(fromDate) && Validation.validateDate(toDate)) {
			this.callback.onDateSelected(fromDate, toDate);
			this.dismiss();
		} else {
			Log.v("DateSelectionDialogFragment", "Invalid Date");
		}
	}
	
	private void performCancel() {
		this.dismiss();
	}
	
	private LinearLayout getSourceView(int source) {
		switch(source) {
		case R.id.date_selection_layout_from_day:
			return this.layoutFromDay;
		case R.id.date_selection_layout_from_month:
			return this.layoutFromMonth;
		case R.id.date_selection_layout_from_year:
			return this.layoutFromYear;
		case R.id.date_selection_layout_to_day:
			return this.layoutToDay;
		case R.id.date_selection_layout_to_month:
			return this.layoutToMonth;
		case R.id.date_selection_layout_to_year:
			return this.layoutToYear;
		}
		
		return null;
	}
}

Leider funktioniert das Scrolling des Gesture-Detectors nicht wirklich. Er reagiert nur manchmal. Ich scrolle und scrolle über die Layouts und nichts passiert, und dann plötzlich von jetzt auf gleich gehts wie geschmiert. Dann will ich auf einem anderen Layout scrollen und es geht wieder ewig nicht.

Ich habe leider keine Ahnung was da schief läuft, deshalb muss ich euch um Hilfe bitten.
 
Ich habe das Ganze mal auf ein etwas kleineres Problem herunter gebrochen.
Das Layout sieht nun wie folgt aus:

Code:
	<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
		xmlns:tools="http://schemas.android.com/tools"
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:layout_gravity="center"
		android:fillViewport="true"
		android:gravity="center" >
						
		<LinearLayout
			android:id="@+id/date_selection_layout_from_day"
			android:layout_width="match_parent"
			android:layout_height="wrap_content"
			android:layout_gravity="center"
			android:gravity="center"
			android:orientation="vertical" >

			<EditText
				android:id="@+id/date_selection_edittext_from_day"
				android:layout_width="100dp"
				android:layout_height="50dp"
				android:layout_gravity="center"
				android:background="@drawable/custom_background"
				android:gravity="center"
				android:inputType="number"
				android:maxLines="1"
				android:nextFocusDown="@+id/date_selection_edittext_from_month"
				android:paddingBottom="5dp"
				android:paddingTop="5dp"
				android:singleLine="true"
				android:textColor="@color/textcolorprimary"
				android:textSize="20sp" />
		</LinearLayout>

	</ScrollView>

Also ein EditText in einem LinearLayout in einer ScrollView. Wenn ich nun
folgendes mache:

Code:
this.editTextFromDay = (EditText) view.findViewById(R.id.date_selection_edittext_from_day);
this.editTextFromDay.setOnTouchListener(this);

Funktioniert alles ohne Probleme. Ich möchte allerdings, dass die Touch Events vom LinearLayout verarbeitet werden, deshalb habe ich folgendes
getan:

Code:
this.layoutFromDay = (LinearLayout) view.findViewById(R.id.date_selection_layout_from_day);
this.layoutFromDay.setOnTouchListener(this);

this.editTextFromDay = (EditText) view.findViewById(R.id.date_selection_edittext_from_day);
this.editTextFromDay.setEnabled(false);

Und nun, obwohl das EditText deaktiviert ist, fängt es anscheinend die
Touch Events ab. Immer wenn ich über das EditText scrolle passiert
gar nichts, wenn ich über das Layout scrolle funktioniert alles. Ich möchte
also, dass die Touch Events aller Kinder des LinearLayouts irgendwie zum
LinearLayout weitergeleitet werden. Wie kann ich das tun?

Ich kann leider onInterceptTouchEvent nicht verwenden, da mein sich
mein Code in einem DialogFragment befindet.
 
Zuletzt bearbeitet:

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
977
swa00
swa00
O
Antworten
15
Aufrufe
2.983
ORHUX
O
D
Antworten
3
Aufrufe
465
jogimuc
J
Zurück
Oben Unten