Pregunta Custom 'Keyboard' integrado 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 Android Developer Group me llevó a esta publicación:

Esto realmente no es cómo la entrada   Se supone que el marco de trabajo funciona.   Un IME debe ser una entrada genérica   facilidad, no para un particular   solicitud. Si necesitas algo   entrada específica de la aplicación, debe construir   en su UI en lugar de empujar   a un IME genérico

¿Cómo creo una entrada específica para la aplicación dentro de la interfaz de usuario? Quiero decir, ¿hay alguna manera de extender el Teclado aplicación o algo así y usarlo solo en mi aplicación?

Funciones necesarias para el teclado:

  • Tecla Mayús para mostrar algunas otras teclas
  • Teclas especiales como raíz cuadrada o PI
  • etc.

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


32
2017-07-07 15:53


origen


Respuestas:


No estoy seguro de si hay una solución sencilla para esto (hasta el punto de que es posible comprender 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 compilarla en su UI   en lugar de empujarlo hacia un IME genérico.

¿Qué se entiende por eso? no que dentro de su aplicación debe intentar incorporar dichas características de entrada extendiendo o modificando el teclado suave en el teléfono. Existen asi que muchos teclados suaves diferentes (y básicamente, el teclado suave es solo 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 me imagino que haya una forma de "hackear" a aquellos para agregar unos pocos botones o lo que sea que quieras (que también podría ser un gran agujero de seguridad, otra razón por la que probablemente no sea posible).

Lo que sugiere la cita anterior, es que tienes que crear otro forma de entrada además el teclado. Uno de esos ejemplos, y uno muy bueno, si pudiera agregar, es cómo Calculadora científica RealCalc mira:

RealCalc Scientific Calculator

Ahora bien, esto no es de código abierto, así que solo puedo adivinar cómo se ve el código (pero tampoco debería ser demasiado difícil de adivinar): en su forma más simple, esta es solo una grilla con muchas botones. Cada botón maneja el evento onClick, lo que significaría realizar algún tipo de acción (cambiar la etiqueta en algunos otros botones, mostrar un menú, mostrar texto en la etiqueta superior o lo que sea), y eso probablemente sea lo que sea. Y, por supuesto, nunca se muestra el teclado virtual del teléfono (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 compilarla en su UI. O en otras palabras: cree botones (y no muestre el teclado virtual si no lo necesita) y haga que las cosas sucedan al hacer clic en ellos.


Y solo por haberlo mencionado: si hacer quiero crear tu propio IME (que creo firmemente es no el caso aquí), debería echar un vistazo a los siguientes recursos:


18
2018-01-18 19:28



En mi humilde opinión, debería echar un vistazo al comienzo de la referencia sobre el teclado y la vista del teclado 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 estás buscando.


9
2018-01-18 20:02



Como se menciona por @ sebap123 Teclado y KeyboardView clase es la que necesita usar,

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


2
2018-02-23 07:19