Custom 'Teclado' construido en una aplicación en Android

He estado buscando crear un teclado personalizado para mi aplicación. Al principio, comencé a mirar el SoftKeyboard para los ejemplos de SDK, pero leer el Grupo de Desarrolladores de Android me llevó a este post:

Esto no es realmente cómo el marco de método de entrada se supone que funcione. Un IME debe ser una facilidad de entrada genérica, no para una aplicación particular. Si necesita alguna entrada específica de la aplicación, debe crearla en su interfaz de usuario en lugar de empujarla a un IME genérico.

¿Cómo construyo una entrada específica de la aplicación dentro de la interfaz de usuario? Quiero decir, ¿hay alguna manera de extender la aplicación Keyboard o algo así y usarla sólo en mi aplicación?

Características necesarias para el teclado:

  • Tecla Mayús para mostrar otras teclas
  • Claves especiales como la raíz cuadrada o PI
  • Etc.

PS: una solución fea podría ser hacer una tabla de ImageButton por ejemplo, pero quería hacer algo limpio.

No estoy realmente seguro si hay una solución directa a esto (en esa medida que incluso es posible entender la verdadera razón detrás de la pregunta original).

Como se cita en la pregunta original:

Si necesita alguna entrada específica de la aplicación, debe crearla en su interfaz de usuario en lugar de empujarla a un IME genérico.

Lo que se entiende por eso, no es que usted dentro de su aplicación debe tratar de construir en tales características de entrada mediante la ampliación o modificación del teclado suave en el teléfono. Hay muchos teclados diferentes (y, básicamente, el teclado suave es sólo otra aplicación), ya que la mayoría de los fabricantes de teléfonos crean su propia versión, y la gente descarga teclados de terceros (como Swype o SwiftKey, etc.), y no puedo Hay una manera para que usted "corte" en los que añadir algunos botones o lo que sea que desea (que también podría ser un agujero de seguridad importante, otra razón por la que probablemente no es posible).

Lo que en su lugar la cita anterior sugiere, es que usted tiene que crear alguna otra forma de entrada además del teclado. Uno de estos ejemplos, y uno muy bueno si quiero añadir, es cómo se ve la calculadora científica RealCalc :

RealCalc Calculadora científica

Ahora esto no es de código abierto, así que sólo puedo adivinar cómo se ve el código (pero no debería ser demasiado difícil suponer): en su forma más simple, esto es sólo una cuadrícula con un montón de botones . Cada botón maneja el evento onClick, lo que significaría realizar algún tipo de acción (cambiar la etiqueta de algunos otros botones, mostrar un menú, mostrar algún texto en la etiqueta superior o lo que sea), y eso es probablemente bastante lo que es. Y por supuesto, el teclado del teléfono nunca se muestra (ya que no necesita un teclado con todos esos botones (y tampoco hay campos de entrada para escribir nada).

Todo se reduce a la cita ya mencionada: Si necesita alguna entrada específica de la aplicación, debe construir en su interfaz de usuario . O en otras palabras: crear botones (y no mostrar el teclado virtual si no lo necesita) y hacer que las cosas sucedan cuando se hace clic en ellos.


Y sólo por haberlo mencionado: si quieres crear tu propio IME (que creo firmemente que no es el caso aquí), deberías echar un vistazo a los siguientes recursos:

  • Métodos de entrada en pantalla
  • Creación de un método de entrada
  • Muestra del teclado

En mi humilde opinión usted debe echar un vistazo al principio de la referencia sobre teclado y teclado ver http://developer.android.com/reference/android/inputmethodservice/Keyboard.html y http://developer.android.com/reference /android/inputmethodservice/KeyboardView.html .

Allí puede ver un ejemplo de definición de teclado utilizando un archivo XML. Creo que esto es lo que buscas.

Como se mencionó por @ Sebap123 Teclado y clase KeyboardView son el que necesita para utilizar,

Además, para la implementación, aquí está una guía detallada rápida .

  • Auto oculta el teclado después de desplazarse ListView en android
  • ¿Cómo escuchar la pulsación de teclas en el teclado suave?
  • ¿Cómo evitar que el teclado virtual de Android mueva la vista en un fragmento?
  • Desplácese hacia arriba cuando aparezca el teclado
  • ¿Cómo puedo obtener la altura del teclado del método de entrada actual sin mostrarlo?
  • Hacer que el teclado Android resista a los ataques de KeyLogger
  • Android Ocultar barra de navegación / permanecer en modo inmersivo con la apariencia de teclado suave
  • Tomar captura de pantalla mediante programación de toda la pantalla
  • "No hay teclado para id 0" - ¿qué significa?
  • Añadir mi propio teclado en lugar del teclado predeterminado en el dispositivo Android como entrada
  • Ocultar o quitar el botón del teclado en la pantalla CardIO Scann (Android)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.