Android: IME sin teclado

Im tratando de crear un IME para Android que no es un teclado tradicional (filas de teclas correspondientes a las diferentes letras) y estoy teniendo problemas para encontrar recursos útiles sobre cómo hacerlo ya que todos los ejemplos de código en el SDK utilizar un teclado de la API Y está construido en funciones.

He diseñado la interfaz del IME en un archivo XML como si fuera simplemente una actividad dentro de la aplicación, pero me estoy perdiendo en sus demos ya que sus teclados son simplemente objetos que se construyen a partir de un estilo diferente de la estructura XML.

Si alguien tiene un enlace a un proyecto de código abierto que no utiliza la estructura de teclado tradicional o simplemente podría guiarme para mostrar la interfaz de usuario que ya he construido en la ventana de IME, creo que puedo calcular el resto.

Si necesita más información especfica, no dude en preguntar. Gracias por adelantado.

One Solution collect form web for “Android: IME sin teclado”

La muestra de SoftKeyboard se estructura de hecho similar a lo que usted necesita, aunque usted no lo sabe. Vamos a romperlo – aquí está un talón completo para actuar como un servicio de método de entrada y utilizar el teclado XML estándar:

import android.inputmethodservice.InputMethodService; import android.inputmethodservice.Keyboard; public class MyInputMethod extends InputMethodService { private Keyboard mKeyboard; @Override public void onInitializeInterface() { mKeyboard = new Keyboard(this, R.xml.qwerty); } @Override public View onCreateInputView() { mInputView = (KeyboardView) getLayoutInflater().inflate( R.layout.input, null); mInputView.setKeyboard(mKeyboard); return mInputView; } } 

Tenga en cuenta que se nombran dos documentos XML. El primero, res/xml/qwerty.xml , define el diseño de modo que la clase KeyboardView sabe cómo dibujar el teclado.

Pero el diseño que infla, res/layout/input.xml , consiste en esto (simplificado):

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"> <android.inputmethodservice.KeyboardView android:id="@+id/keyboard" /> </LinearLayout> 

¡Esto es todo lo que necesitas para crear declarativamente una vista! Crear una View independiente no es muy diferente de crear una Activity . No tiene el ciclo de vida de actividad estándar, pero ambos ambientes le dan acceso a diseños XML. Todo lo que necesitas hacer es usar el inflado, hacer referencia a cualquier subvista que necesites y luego devolver la vista principal.

Así que espero que usted será capaz de inflar su diseño después de pensar en esto.


Ni siquiera necesita utilizar diseños XML si su diseño es lo suficientemente simple. Si su método de entrada puede consistir enteramente en una sola vista, sólo puede instanciarlo directamente en onCreateInputView . Aquí hay un servicio de método de entrada de stub completo que no utiliza ningún XML:

 public class MyInputMethod extends InputMethodService { MyView view; @Override public View onCreateInputView() { return view = new MyView(this); } } 

(Por supuesto, el boilerplate en el manifiesto y res/xml/method.xml archivos todavía estaría allí.)

  • ¿Cómo hacer que una disposición lineal se pueda desplazar?
  • Android Resource - Array de matrices
  • Quiero usar Xpath en Android para analizar XML
  • ¿Establecer un fondo a los botones en un diálogo?
  • Uso de iconos vectoriales en Android
  • Diseño de vistas personalizadas
  • Cómo hacer que Android soporte FloatingActionButton en la parte inferior derecha de la pantalla?
  • Cadena de resultados de Android HttpUrlConnection truncada
  • ¿Puedo obtener una vista previa de la barra de acciones en el editor de diseño gráfico?
  • Simple Xml - orden de elementos no conservados?
  • Dibujar la forma de Android xml diagonal con triángulos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.