you studio should provide programacion móviles missing desarrollo curso aplicaciones android android-edittext onclicklistener

studio - missing accessibility label where min sdk 17 you should provide an android hint



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

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

Pero OnClickListener está comportando de manera extraña: toco el EditText y luego aparece el teclado del software (que no quiero). Cuando vuelvo a tocar, finalmente se llama a OnClickListener.onClick() y aparece el cuadro de diálogo.

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


A diferencia de la mayoría de los otros controles, los EditText pueden EditText mientras el sistema está en "modo táctil". El primer evento de clic enfoca el control, mientras que el segundo evento de clic OnClickListener el OnClickListener . Si deshabilita el enfoque en modo táctil con el atributo de vista de android:focusableInTouchMode OnClickListener , el OnClickListener debe disparar como se espera.

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


En lugar de Touch Listener, use Text Change Listener:

editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { //yourFunction(); } @Override public void afterTextChanged(Editable s) { } });


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 retorna true el evento se maneja y el teclado no se abre. Si desea que el teclado todavía aparezca y se registre, haga clic en él para que devuelva false .


Parece que no desea que el usuario pueda escribir realmente el texto de edición. Solo desea que puedan elegir una hora a través de un selector de tiempo. Entonces, ¿por qué no solo un botón que muestra un TimePickerDialog? Podrías mostrar el tiempo que fue seleccionado en un TextView.

O simplemente puede reemplazar la vista EditText con una vista TimePicker (no un cuadro de diálogo, solo una vista normal).


Resolví 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 solo 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 pulsable. Establecer el OnClickListener y ya está. En teoría, en la práctica deberías sumar también.

android:editable="false"

que está en desuso pero hace el truco.