android - ¿EditText no captura arroyos de ViewFlipper?
android-edittext gesture (2)
Puede anular el método dispatchTouchEvent de la actividad:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (gestureDetector != null) {
gestureDetector.onTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
Obviamente, gestureDetector es una variable miembro que necesita declarar e inicializar en su actividad.
Esto es enloquecedor. Tengo el siguiente diseño XML:
<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/shadow" android:focusable="true" android:focusableInTouchMode="true">
<ViewFlipper android:id="@+id/flipper" android:layout_width="fill_parent" android:layout_height="fill_parent">
<EditText android:id="@+id/reviews" style="@style/DescriptionArea" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:background="@null" />
<EditText android:id="@+id/notes" style="@style/DescriptionArea" android:hint="@string/detail_hint" android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:maxLines="4"/>
</ViewFlipper>
</FrameLayout>
Y el Java:
viewFlipper = (ViewFlipper)findViewById(R.id.flipper);
slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};
Parece que si intento arrojarme sobre el área EditText, el gesto no se registra. Sin embargo, si lo busco, es decir, el fondo de EditText, SI FUNCIONA. Intenté seguir con los alturas y anchos de fill_parent / wrap_content, pero parece que no cambia nada. Confirmé esta sospecha al hacer que el fondo de EditText sea "rojo" y noté que nada dentro de ese rectángulo rojo puede activar una aventura. Entonces, ¿cómo hago que esto funcione?
intente aplicar setLongClickable(true)
para ViewFlipper