Quería un teclado numérico que tuviera un botón de ir o terminar que cerrara y ejecutara una clase de cálculo. Gracias a un consejo del commonware sobre dónde comenzar, conseguí que funcionara muy bien en el emulador. Luego vine a cargarlo a mi deseo de HTC de probar y no funciona en absoluto. Estoy seguro de que debe ser porque HTC tiene sentido propio, pero seguramente debe haber una forma de hacer que esto funcione en los teléfonos HTC. ¿Alguien más logró sortear este problema?Android: control de teclado en HTC desire
Respuesta
Puedo reproducir lo que creo que está viendo en el HTC Incredible.
No todos los teclados suaves admitirán el botón de acción IME. Algunos, como el "teclado" suave de Graffiti, pueden no tener ningún botón, y mucho menos un botón de acción IME. Incluso el Compatibility Definition Document no dice nada sobre la necesidad de dicho botón de acción para los teclados suministrados con un dispositivo.
Por lo tanto, no debe confiar en el botón de acción IME. Si está allí, los usuarios pueden usarlo. Sin embargo, siempre tenga algún otro medio para lograr cualquiera que sea su objetivo.
Estoy detectando si se ha presionado el botón DONE/GO/RETURN con un onEditorActionListener, pero buscando opciones de IME y KeyEvents para cubrir los teclados de HTC, así como cualquier teclado que acepte las opciones de IME.
(Este código funciona para HTC teclados, además de hacer cualquier teclado que tiene opciones IME)
EditText.setOnEditorActionListener(new TextView.OnEditorActionListener(){
public boolean onEditorAction(TextView exampleView, int actionId, KeyEvent event){
if(actionId == EditorInfo.IME_ACTION_DONE
|| actionId == EditorInfo.IME_NULL
|| event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
//Do something in here
return true;
} else {
return false;
}
}
});
Me temo que con este código, la parte ** // Hacer algo aquí ** se ejecutará dos veces ... ¿podría verificarlo? – Konsumierer
Gracias Asha .... funcionó para mí – hemu
para mí se obtiene ERROR/AndroidRuntime (26336): EXCEPCIÓN FATAL: main java.lang.NullPointerException ------ en la cadena "if (actionId == ..." – djdance
que estaba usando un EditarTexto con inputType = "número" y resolvió el problema mediante la modificación de la solución de Asha:
private TextView.OnEditorActionListener numberEnterListener = new TextView.OnEditorActionListener(){
public boolean onEditorAction(TextView tv, int actionId, KeyEvent event){
if(actionId == EditorInfo.IME_ACTION_DONE
|| actionId == EditorInfo.IME_NULL
|| event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
tv.clearFocus();
//Stupid keyboard needs to be closed as well
InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(tv.getWindowToken(), 0);
return true;
} else {
return false;
}
}
};
Se eliminó el foco para dejar de mostrar el teclado numérico. El imm era necesario porque un teclado suave aún estaba presente incluso después de borrar el foco.
- 1. Emulador en Android para HTC Desire
- 2. Android Mapview no está cargando mosaicos en HTC Desire?
- 3. La configuración correcta de dispositivo Eclipse/Android para HTC Desire
- 4. controlador android usb adb para htc desire hd
- 5. ¿Por qué la mezcla OpenGL no funciona en HTC Desire?
- 6. Comportamiento extraño al transmitir usando MediaPlayer de Android en HTC Desire con Android 2.2
- 7. Android Native debug (ndk-gdb) en HTC Desire: ¿falla de ejecución?
- 8. ¿Cómo mostrar el resultado de console.log() en la aplicación PhoneGap usando Eclipse y HTC Desire HD?
- 9. tabla faltante en SQLite con la versión específica de HTC DESIRE HD
- 10. Android: Controlador ADB para HTC One X
- 11. Javascript console.log() en dispositivos HTC Android y adb logcat
- 12. Teclado de Android en pantalla automático apareciendo
- 13. El manejo de la base de datos dejó de funcionar en Android 2.2.1 (Desire HD 1.72.405.3)
- 14. ¿Qué es el proveedor de ubicación "pasivo"? Visto en el deseo de HTC con Android 2.2
- 15. Fuente de teclado Android
- 16. Intención para Android secuencia HTTP MP3 en HTC Incredible
- 17. jQuery Draggable() y control de teclado
- 18. Contar caracteres con TextWatcher falla en HTC longpress
- 19. Teclado Android api
- 20. Android cerrar el teclado
- 21. API de copiar/pegar de HTC Sense
- 22. Teclado numérico de software en Android
- 23. Leer eventos de teclado en Android WebView
- 24. teclado de fuerza abierto en android
- 25. Control del teclado Luces LED usando c
- 26. Teclado de control Hecho evento presionado en Iphone
- 27. Android: Detectar inactividad del usuario/Detectar (teclado) entrada de teclado
- 28. Cómo detectar HTC Sense?
- 29. Ajuste del brillo de la pantalla en un dispositivo de HTC Sense
- 30. Inhabilitar cancelación de ruido HTC
¿Estás diciendo que mi mejor enfoque es crear mi propio teclado, no un IME sino una vista? Sí tuve un botón de calcular en un punto, pero estaba cubierto por el teclado. Es molesto porque la tecla de acción del teclado de HTC se pone verde cuando está configurado para escribir GO, que es genial, por lo que entiende que simplemente devuelve 0 en el actionid. Estoy empezando a pensar que crear el pequeño teclado es el camino a seguir, pero estaba tratando de evitarlo. ¿Es ese el mejor enfoque? ¿Hay alguna documentación sobre las mejores prácticas de Android que sea efectivamente legible? –
Oh, me suscribí finalmente por cierto. desearía poder asistir a uno de sus cursos en Londres, sería bastante útil. Por desgracia estoy tratando de aprender Java y Android al mismo tiempo por prueba y error –
@ Dream Architect: "¿Estás diciendo que mi mejor enfoque es crear mi propio teclado, no un IME sino una vista?" - para una aplicación común, simplemente tendría el botón de acción equivalente como parte de la actividad. Para una calculadora, necesitará otras "claves" de todos modos (+, -, *, /, etc.), y probablemente necesite su propio panel de botones. En ese caso, pondría las teclas numéricas en ese panel de botones, como las tiene una calculadora común. – CommonsWare