Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo hacer algo después de que el usuario haga clic en mi EditText

Tengo un EditText que muestra el tiempo. Después de que el usuario haga clic en el EditText quiero mostrar un TimePickerDialog , así que establezco un View.OnClickListener a mi EditText .

Pero el OnClickListener se comporta extrañamente – toco el EditText y luego aparece el teclado del software (que no quiero). Cuando toco de nuevo, se llama finalmente OnClickListener.onClick() y aparece el cuadro de diálogo.

¿Qué debo hacer si deseo que el diálogo aparezca inmediatamente?

  • ¿Por qué OnClickListener en un ViewHolder no funciona?
  • Cómo combinar OnClickListener y OnTouchListener para un ImageButton
  • Botón de forma personalizada de Android
  • Cajón de navegación OnItemClickListener
  • Cómo quitar un elemento seleccionado de ListView utilizando CursorAdapter
  • SetOnPageChangeListener no llama aPageSelected
  • Cómo obtener clics en RecyclerView (NO los niños)
  • Android - método setOnClickListener cómo funciona?
  • 5 Solutions collect form web for “Cómo hacer algo después de que el usuario haga clic en mi EditText”

    A diferencia de la mayoría de los otros controles, EditText s se pueden EditText mientras el sistema está en 'modo táctil'. El primer acontecimiento del tecleo centra el control, mientras que el acontecimiento del segundo tecleo enciende realmente OnClickListener . Si deshabilita el enfoque en modo táctil con el atributo android:focusableInTouchMode View, el OnClickListener se disparará como se esperaba.

     <EditText android:text="@+id/EditText01" android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:focusableInTouchMode="false" /> 

    Otra solución es usar el ontouchlistener :

     edittext.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(MotionEvent.ACTION_UP == event.getAction()) { mQuaternion_1.setText("" + mQ1); } return true; // return is important... } }); 

    Si devuelve true el evento se maneja y el teclado no aparecerá. Si desea que el teclado todavía se muestre y registre haga clic en, tendrá que devolver false .

    Suena como usted no quiere que el usuario realmente sea capaz de escribir en el EditText. Usted sólo quiere que sean capaces de elegir un tiempo a través de un recogedor de tiempo. ¿Por qué no sólo un botón que aparece un TimePickerDialog? Podría mostrar el tiempo que fue escogido en un TextView.

    O simplemente puede reemplazar la vista EditText con una vista TimePicker (no un diálogo, sólo una vista regular).

    He resuelto esto usando un botón personalizado como este:

     <Button android:id="@+id/btTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:text="test" android:textSize="20dp" android:background="@android:drawable/edit_text" /> 

    Si entiendo correctamente sólo necesitas algo como

     <EditText android:text="@+id/EditText01" android:id="@+id/EditText01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:inputType="none" /> 

    No editable y clicable. Establezca OnClickListener y ya está. En teoría, en la práctica debe agregar también

     android:editable="false" 

    Que es obsoleta pero hace el truco.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.