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?

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.

  • Android: ListView no se desplaza con el teclado
  • ¿Cómo conseguir que el teclado muestre una tecla de retorno?
  • ¿Cómo ocultar el teclado sólo con un toque fuera de un edittext?
  • Simulando exactamente la pulsación de teclas de un usuario en Javascript
  • ¿Cómo desarrollar un teclado personalizado para la aplicación de Android?
  • Android - tecla de teclado personalizada y acción
  • Teclado sobre EditText en segundo clic
  • OnKeyDown en un servicio? (Teclas directas globales)
  • Crear teclado personalizado en Android
  • Soft teclado no está presente, no se puede ocultar el teclado - Appium android
  • Cómo utilizar Diccionario (como iphone NSDictionary) en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.