2011-01-06 9 views
28

Mi pregunta es: ¿Cómo puedo actualizar la visualización del botón de acción del teclado virtual sobre la marcha?¿Cómo puedo actualizar la visualización del botón de acción del editor sobre la marcha?

Otra publicación parece tratar sobre cambiar la acción del editor ANTES de que se muestre el teclado: Android: Can't figure how to use setImeActionLabel. Me gustaría cambiar el botón de acción del teclado suave MIENTRAS se muestra.

He logrado parcialmente: - Puedo cambiar la acción usando: editText.setImeOptions (EditorInfo.IME_ACTION_GO); - También puedo volver a dibujar el teclado usando: InputMethodManager.restartInput (editText); Lo hago usando TextWatcher.afterTextChanged. - Sin embargo, tengo un problema con esto. Si presiono una tecla, el teclado muestra qué tecla se ha pulsado. Pero cuando invoco restartInput (...), esto también oculta la vista que muestra qué tecla se ha pulsado. Esto me parece un comportamiento normal, pero necesito una forma de evitarlo.

Extender EditText y anular onKeyUp no es una buena idea, ver: https://groups.google.com/forum/?fromgroups#!topic/android-developers/RIxGfx5qOjM.

La clase KeyboardView tiene exactamente lo que necesito (invalidateKey), pero creo que solo es accesible cuando crea su propio método de entrada.

¿Alguien más tiene algunas mejores ideas?

+0

¿Invalidar la vista en sí no funcionó? –

Respuesta

1

Por favor, intente ser más específico al describir lo que es lo que quiere hacer ... que necesitaba para leer su mensaje muchas veces para poder entender su solicitud ..

Así que lo que quiere hacer es cómo reaccionar ante cualquier tecla presionada en el teclado y mostrar información al respecto en la tecla de acción del teclado. Si ese no es su objetivo, por favor, explique más ...

En caso afirmativo, supongo que necesitaría utilizar AddAl EditText (no visible) llamemos a et0. Después de terminar insertando una letra o cualquier patrón que defina a través de un texto modificado en su texto de edición, cambie el foco a et0 ... para que pueda cambiar el actionKey ... y luego envíe el foco nuevamente a su editText ... para que pueda enhebrar o cronometrar, o cualquier forma de gestionar este cambio temporal de enfoque hacia y desde et0 .. aquí no es necesario reiniciar la entrada.

esperanza de que le ayudará a ..

1

Ha intentado cambiar /system/usr/keychars/default.kcm sobre la marcha antes de invocar el código de redibujado? (el nombre del archivo puede ser diferente según la versión de Android).

Allí, puede configurar no solo los caracteres de salida de las teclas, sino también los valores de visualización de las teclas. No lo he probado, también podría demorarme, pero vale la pena intentarlo.

0

Esto debería ser muy útil para usted.

EditText in = new EditText(this); 
in.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence cs, int s, int b, int c) { 
     Log.i("Key:", cs.toString()); 
    } 
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
}); 
+0

La próxima vez usa la etiqueta para publicar el código. – Flawyte

+0

Bienvenido a SO, aquí, es una buena práctica explicar por qué usar su solución y no solo cómo. Eso hará que su respuesta sea más valiosa y ayudará al lector a tener una mejor comprensión de cómo lo hace. También sugiero que eche un vistazo a nuestras preguntas frecuentes: http://stackoverflow.com/faq. – ForceMagic

Cuestiones relacionadas