2010-03-06 14 views
23

Estoy desarrollando y aplicación de Android con el SDK 1.6. Estoy usando un TimePicker y no quiero que aparezca el teclado al hacer clic en los dígitos del TimePicker. Solo quiero que se cambie el TimePicker usando los botones más y menos. Intenté usar android:focusable="false" y android:focusableInTouchMode="false" esperando que esos lo hicieran, pero no parecían hacer nada. ¿Hay alguna forma de hacer esto?Inhabilitar la entrada del teclado en Android TimePicker

Respuesta

49

oportunidad de empleo:

myTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); 

para desactivar el enfoque en el texto vistas de los números internos

+4

Esto también funciona con DatePicker, solo use DatePicker.FOCUS_BLOCK_DESCENDANTS en su lugar. – swanson

+3

Simplemente use ViewGroup.FOCUS_BLOCK_DESCENDANTS .. Todos tienen el mismo valor - __ - ' – Tobrun

+2

También puede usar android: descenddantFocusability = "blocksDescendants" en xml. – Borzh

0

Usted puede hacer esto:

InputMethodManager imm = 
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

Por favor refiérase a esta pregunta así:

Close/hide the Android Soft Keyboard

+0

Esto no funciona para el TimePicker. He hecho eso antes con un EditText. Además, no solo quiero ocultar el teclado virtual, sino básicamente hacer que los EditTexts dentro del TimePicker nunca tengan foco . Yo solo wa nt los valores que se cambiarán usando los botones más y menos, y no quiero que el usuario pueda hacer clic en el área donde están los números y que aparezca un cursor. He estado tratando de averiguar cómo hacer una referencia a esos niños dentro del TimePicker para hacer esto ... pero no puedo entender cómo. – ashughes

0

Esto hace no trabajo ya sea para EditarTexto controla ... Si pulsa & mantenga pulsada la tecla de menú en una EditarTexto en el que ha establecido InputType.TYPE_NULL y immhideSoftInputFromWindow(...) llamada, el teclado en pantalla todavía aparecerá junto con el copiar/pegar opciones de menú.

+1

PD: esto se refería a la publicación anterior sobre el uso de InputtMethodManager, lo siento, quise utilizar el botón "feedback". – Laurent

2

No sé si esto funciona para TimePicker, pero me pareció que el parametro correcto a utilizar para evitar que el teclado muestre cuando se enfoca una edición de texto o utilizando el menú de goma de la copia y de su contenido:

En primer lugar, debe llamar al setInputType(InputType.TYPE_NULL) en el editText.

siguiente instancia del InputTypeManager:

InputMethodManager imm = 
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 

Y luego, llamar hideSoftInputFromWindow() en el objeto imm, pero utilizando el InputMethodManager.HIDE_NOT_ALWAYS como segundo parámetro en lugar de 0 (tal como se aconseja en la primera respuesta):

imm.hideSoftInputFromWindow(editText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS) 

Esto evitará que el teclado virtual aparezca siempre al hacer clic/enfocar este control EditText, incluso cuando se usa la tecla de menú para realizar operaciones de copiar/pegar.

PD: si quiere evitar las operaciones de copiar/pegar puede llamar al editText.setEditable(false) pero no podrá cambiar dinámicamente el contenido de EditText.

2

he intentado (con el objetivo 4.0.3)

myTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS); 

sin éxito. Después de buscar en Google de "BLOCK_DESCENDANTS TimePicker androide no trabajar" He seguido el golpe

http://code.google.com/p/android/issues/detail?id=38369 

donde el último mensaje, que es por un "Proyecto de Miembros", afirma:

"focusability Descendiente se refiere a la capacidad de una vista para enfocar, como en el cruce de enfoque usando un teclado, trackball o d-pad. No afecta los eventos táctiles por diseño.

Si necesita bloquear eventos táctiles desde una vista descendiente, considere anular onInterceptTouchEvent en una vista principal y devolver true cuando se desee bloquear eventos táctiles. Esto hará que los MotionEvents para ser enviados a los padres que intercepta hasta el último puntero sube "

6

Otra Manera Añadir esto en el código XML:..

android:descendantFocusability="blocksDescendants"

3

XML:

<NumberPicker 
    ... 
    android:descendantFocusability="blocksDescendants" /> 
Cuestiones relacionadas