Deshabilitar la entrada de teclado en Android TimePicker
Estoy desarrollando y la aplicación de Android utilizando el SDK 1.6. Estoy usando un TimePicker
y no quiero que el teclado TimePicker
aparezca cuando hagas clic en los dígitos del TimePicker
. Sólo quiero que el TimePicker
se cambie usando los botones más y menos. He intentado usar android:focusable="false"
y android:focusableInTouchMode="false"
esperando que lo hicieran, pero no parecían hacer nada. ¿Hay alguna forma de hacer esto?
tratar de usar:
myTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
Para deshabilitar el enfoque en las vistas de texto del NumberPickers interno
De otra manera . Agregue esto en su XML:
android:descendantFocusability="blocksDescendants"
XML:
<NumberPicker ... android:descendantFocusability="blocksDescendants" />
No sé si esto funciona para TimePicker, pero encontré el paramter correcto para usar para evitar que el teclado aparezca al enfocar un texto de edición o usar el menú de copiar y pegar en su contenido:
En primer lugar, debe llamar a setInputType(InputType.TYPE_NULL)
en el editText
.
Instancia siguiente el InputTypeManager:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
Y luego, llame a hideSoftInputFromWindow()
en el objeto imm
, pero usando InputMethodManager.HIDE_NOT_ALWAYS
como segundo parámetro en lugar de 0 (como se aconseja en la primera respuesta):
imm.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS)
Esto evitará que el teclado suave aparezca al hacer clic / enfocar este control de EditarTexto, incluso cuando use la tecla de menú para realizar operaciones de copiar / pegar.
PS: si quieres evitar copiar / pegar operaciones puedes llamar a editText.setEditable(false)
pero entonces no podrás cambiar dinámicamente el contenido del EditText.
Acabo de probar (orientación 4.0.3)
myTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
Sin éxito. Después de buscar google para "android TimePicker BLOCK_DESCENDANTS no funciona" seguí el éxito
http://code.google.com/p/android/issues/detail?id=38369
Donde el último post, que es un "miembro del proyecto", dice:
"La focalización descendente se refiere a la capacidad de una vista para concentrarse, como en el recorrido de enfoque mediante teclado, trackball o d-pad. No afecta a los eventos táctiles por diseño.
Si necesita bloquear eventos táctiles desde una vista descendente, considere sobreescribir onInterceptTouchEvent en una vista primaria y devolver true cuando se desea bloquear eventos táctiles. Esto hará que los MotionEvents sean enviados al padre interceptor hasta que el último puntero suba. "
Puedes hacerlo:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Por favor refiérase también a esta pregunta:
Cerrar / ocultar el teclado suave de Android
Esto no funciona para los controles de EditText … Si presiona y mantenga presionada la tecla Menú en un EditText en el que ha establecido InputType.TYPE_NULL
y llamado immhideSoftInputFromWindow(...)
, el teclado immhideSoftInputFromWindow(...)
seguirá apareciendo junto con la copia / Pegar opciones de menú.