Android: control de la tecla de teclado en el deseo de HTC
Quería un teclado numérico que tenía un botón de ir o hacer que cerró y ejecutó una clase de cálculo. Gracias a un consejo de commonware por donde empezar, conseguí esto trabajando maravillosamente en el emulador. Luego vine a cargarlo en mi deseo de HTC para la prueba y no funciona en absoluto. Estoy seguro de que debe ser debido a la sensación de HTC tener su propia ime, pero sin duda debe ser una manera de hacer que este trabajo en los teléfonos HTC? ¿Alguien más logró evitar este problema?
- Cómo ocultar softkeyboad cuando se inicia la actividad en android?
- ¿Cómo comprobar si el teclado nativo / hardware se utiliza?
- ¿Puedo tener "adjustResize" comportamiento de teclado suave y una barra de herramientas detrás de la barra de estado al mismo tiempo?
- Comience un teclado diferente para diferentes actividades
- FloatingActionButton sobre KeyBoard sin "adjustResize"
- Android Implementa dos fragmentos que tienen un comportamiento diferente cuando aparece el teclado
- La aplicación de Android no se actualiza después de ocultar el teclado virtual
- Cómo agregar scrollview a keyboardView en android
- Cómo cambiar la altura de un teclado blando en tiempo de ejecución?
- Mostrar automáticamente el teclado personalizado para EditText. Androide
- Cómo agregar sugerencias en el teclado android
- android ocultar el teclado después de pulsar el botón
- Android demasiados sub view en la pantalla -> slow down Teclado oculto
Puedo replicar lo que creo que está viendo en el HTC Incredible.
No todos los teclados suaves apoyarán el botón de acción IME. Algunos, como el "teclado" suave de Graffiti, pueden no tener botones en absoluto, mucho menos un botón de acción de IME. Incluso el Documento de Definición de Compatibilidad no dice nada sobre la necesidad de tal 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 tienen otros medios de lograr lo que su objetivo es.
Estoy detectando si el botón DONE / GO / RETURN se ha presionado usando un onEditorActionListener, pero la comprobación de las opciones IME y KeyEvents para cubrir los teclados HTC, así como los teclados que aceptan las opciones de IME.
(Este código funciona para los teclados increíbles de HTC así como cualquier teclado que tenga opciones de 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; } } });
Utilizaba un EditText con inputType = "number" y resolví el problema modificando 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; } } };
El enfoque se eliminó para dejar de mostrar el teclado numérico. El imm fue necesario porque un teclado suave aún estaba presente incluso después de borrar el enfoque.
- Cómo cambiar el color de borde del botón de radio en android?
- Pasar datos de una actividad a otra en Android