Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo hacer un teclado personalizado de Android?

Quiero hacer un teclado personalizado. No sé cómo hacerlo en xml y actividad. Esta imagen es mi modelo de teclado. Sólo necesita números.

Introduzca aquí la descripción de la imagen

7 Solutions collect form web for “Cómo hacer un teclado personalizado de Android?”

En primer lugar, necesitará un archivo keyboard.xml que se colocará en la carpeta res/xml (si la carpeta no existe, lo creó).

 <?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="15%p" android:keyHeight="15%p" > <Row> <Key android:codes="1" android:keyLabel="1" android:horizontalGap="4%p"/> <Key android:codes="2" android:keyLabel="2" android:horizontalGap="4%p"/> <Key android:codes="3" android:keyLabel="3" android:horizontalGap="4%p" /> <Key android:codes="4" android:keyLabel="4" android:horizontalGap="4%p" /> <Key android:codes="5" android:keyLabel="5" android:horizontalGap="4%p" /> </Row> <Row> <Key android:codes="6" android:keyLabel="6" android:horizontalGap="4%p"/> <Key android:codes="7" android:keyLabel="7" android:horizontalGap="4%p"/> <Key android:codes="8" android:keyLabel="8" android:horizontalGap="4%p" /> <Key android:codes="9" android:keyLabel="9" android:horizontalGap="4%p" /> <Key android:codes="0" android:keyLabel="0" android:horizontalGap="4%p" /> </Row> <Row> <Key android:codes="-1" android:keyIcon="@drawable/backspace" android:keyWidth="34%p" android:horizontalGap="4%p"/> <Key android:codes="100" android:keyLabel="Enter" android:keyWidth="53%p" android:horizontalGap="4%p"/> </Row> </Keyboard> 

** Tenga en cuenta que tendrá que crear el backspace dibujable y colocarlo en la carpeta res / drawable-ldpi con un tamaño muy pequeño (como 18×18 píxeles)

A continuación, en el archivo xml que desea que se utilice (donde está su TextView) debe agregar el código siguiente:

 <RelativeLayout ... > ..... <android.inputmethodservice.KeyboardView android:id="@+id/keyboardview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:focusable="true" android:focusableInTouchMode="true" android:visibility="gone" /> ...... </RelativeLayout> 

** Tenga en cuenta que el archivo xml que va a colocar el android.inputmethodservice.KeyboardView en, tiene que ser RelativeLayout con el fin de poder establecer el alignParentBottom="true" (Normalmente los teclados se presentan en la parte inferior de la pantalla)

A continuación, debe agregar el código siguiente en la función onCreate de la Activity que maneja el TextView que desea adjuntar el teclado

  // Create the Keyboard mKeyboard= new Keyboard(this,R.xml.keyboard); // Lookup the KeyboardView mKeyboardView= (KeyboardView)findViewById(R.id.keyboardview); // Attach the keyboard to the view mKeyboardView.setKeyboard( mKeyboard ); // Do not show the preview balloons //mKeyboardView.setPreviewEnabled(false); // Install the key handler mKeyboardView.setOnKeyboardActionListener(mOnKeyboardActionListener); 

** Tenga en cuenta que mKeyboard y mKeyboardView son variables de clase privadas que tiene que crear.

Entonces usted necesita la siguiente función para abrir el teclado (debe asociarlo con el TextView a través de la propiedad onClick xml)

  public void openKeyboard(View v) { mKeyboardView.setVisibility(View.VISIBLE); mKeyboardView.setEnabled(true); if( v!=null)((InputMethodManager)getSystemService(Activity.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(v.getWindowToken(), 0); } 

Y finalmente necesita el OnKeyboardActionListener que manejará sus eventos

 private OnKeyboardActionListener mOnKeyboardActionListener = new OnKeyboardActionListener() { @Override public void onKey(int primaryCode, int[] keyCodes) { //Here check the primaryCode to see which key is pressed //based on the android:codes property if(primaryCode==1) { Log.i("Key","You just pressed 1 button"); } } @Override public void onPress(int arg0) { } @Override public void onRelease(int primaryCode) { } @Override public void onText(CharSequence text) { } @Override public void swipeDown() { } @Override public void swipeLeft() { } @Override public void swipeRight() { } @Override public void swipeUp() { } }; 

¡¡¡Espero que ayude!!!

La mayor parte del código encontrado aquí

Usar KeyboardView :

 KeyboardView kbd = new KeyboardView(context); kbd.setKeyboard(new Keyboard(this, R.xml.custom)); kbd.setOnKeyboardActionListener(new OnKeyboardActionListener() { .... } 

Ahora tiene kbd que es una vista normal.

Lo bueno de esto es que R.xml.custom refiere a /res/xml/custom.xml , que define en xml el diseño del teclado. Para obtener más información sobre este archivo, busque aquí: Keyboard , Keyboard.Row , Keyboard.Key .

Aquí hay un proyecto de ejemplo para un teclado suave.

https://developer.android.com/guide/topics/text/creating-input-method.html

Su debe estar en las mismas líneas con un diseño diferente.

Editar: Si necesita el teclado sólo en su aplicación, es muy simple! Cree un diseño lineal con orientación vertical y cree 3 diseños lineales dentro de él con orientación horizontal. A continuación, coloque los botones de cada fila en cada uno de esos diseños lineales horizontales y asigne la propiedad de peso a los botones. Utilice android: layout_weight = 1 para todos ellos, para que se equidistantes.

Esto resolverá. Si no consiguió lo que se esperaba, por favor, publique el código aquí, y estamos aquí para ayudarle!

Uno de los mejores ejemplos bien documentados que encontré.

http://www.fampennings.nl/maarten/android/09keyboard/index.htm

Se proporcionan archivos XML y código fuente relacionados con KeyboardView .

Tenía el mismo problema. Utilicé el diseño de la mesa al principio, pero el diseño cambiaba después de pulsar un botón. Encontró esta página muy útil sin embargo. http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-creating-a-numeric-keypad-with-gridlayout/

Teclado del sistema

Esta respuesta indica cómo crear un teclado de sistema personalizado que se puede utilizar en cualquier aplicación que el usuario haya instalado en su teléfono. Si quieres crear un teclado que solo se use en tu propia aplicación, verás mi otra respuesta .

El siguiente ejemplo se verá así. Puede modificarlo para cualquier disposición de teclado.

Introduzca aquí la descripción de la imagen

Los siguientes pasos muestran cómo crear un teclado de sistema personalizado que funcione. Tanto como posible intenté quitar cualquier código innecesario. Si hay otras características que necesitas, proporcioné enlaces a más ayuda al final.

1. Inicie un nuevo proyecto de Android

Nombré mi proyecto "Teclado personalizado". Llámalo como quieras. No hay nada más especial aquí. Voy a dejar la MainActivity y "Hello World!" Como es.

2. Agregue los archivos de diseño

Agregue los siguientes dos archivos a la carpeta res/layout su aplicación:

  • Keyboard_view.xml
  • Key_preview.xml

Keyboard_view.xml

Esta vista es como un contenedor que contendrá nuestro teclado. En este ejemplo, sólo hay un teclado, pero puede agregar otros teclados y intercambiarlos dentro y fuera de KeyboardView .

 <?xml version="1.0" encoding="utf-8"?> <android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:keyPreviewLayout="@layout/key_preview" android:layout_alignParentBottom="true"> </android.inputmethodservice.KeyboardView> 

Key_preview.xml

La vista previa de la clave es un diseño que aparece cuando se pulsa una tecla del teclado. Simplemente muestra qué clave está presionando (en caso de que sus dedos grandes y gordos lo cubran). Esto no es una opción múltiple emergente. Para eso, debe revisar la vista Candidatos .

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@android:color/white" android:textColor="@android:color/black" android:textSize="30sp"> </TextView> 

3. Agregar archivos xml de apoyo

Cree una carpeta xml en su carpeta res . (Haga clic derecho en res y elija Nuevo> Directorio .)

A continuación, agregue los siguientes dos archivos xml. (Haga clic derecho en la carpeta xml y elija Nuevo> Archivo de recursos XML .)

  • Número_pad.xml
  • Method.xml

Número_pad.xml

Aquí es donde comienza a conseguir más interesante. Este Keyboard define el diseño de las teclas .

 <?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="20%p" android:horizontalGap="5dp" android:verticalGap="5dp" android:keyHeight="60dp"> <Row> <Key android:codes="49" android:keyLabel="1" android:keyEdgeFlags="left"/> <Key android:codes="50" android:keyLabel="2"/> <Key android:codes="51" android:keyLabel="3"/> <Key android:codes="52" android:keyLabel="4"/> <Key android:codes="53" android:keyLabel="5" android:keyEdgeFlags="right"/> </Row> <Row> <Key android:codes="54" android:keyLabel="6" android:keyEdgeFlags="left"/> <Key android:codes="55" android:keyLabel="7"/> <Key android:codes="56" android:keyLabel="8"/> <Key android:codes="57" android:keyLabel="9"/> <Key android:codes="48" android:keyLabel="0" android:keyEdgeFlags="right"/> </Row> <Row> <Key android:codes="-5" android:keyLabel="DELETE" android:keyWidth="40%p" android:keyEdgeFlags="left" android:isRepeatable="true"/> <Key android:codes="10" android:keyLabel="ENTER" android:keyWidth="60%p" android:keyEdgeFlags="right"/> </Row> </Keyboard> 

Aquí hay algunas cosas a tener en cuenta:

  • keyWidth : Este es el ancho predeterminado de cada clave. El 20%p significa que cada tecla debe ocupar un 20% del ancho del p arente. Puede ser anulada por las teclas individuales, aunque, como se puede ver sucedió con las teclas Borrar y Enter en la tercera fila.
  • keyHeight : Es difícil de codificar aquí, pero se podría utilizar algo como @dimen/key_height para establecer dinámicamente para diferentes tamaños de pantalla.
  • Gap : La brecha horizontal y vertical indica cuánto espacio dejar entre las teclas. Incluso si se establece en 0px todavía hay un pequeño vacío.
  • codes : Este puede ser un valor de código Unicode o personalizado que determina qué sucede o qué se introduce cuando se pulsa la tecla. Consulte keyOutputText si desea introducir una cadena Unicode más larga.
  • keyLabel : Este es el texto que se muestra en la clave.
  • keyEdgeFlags : Esto indica a qué borde debe alinearse la clave.
  • isRepeatable : Si mantiene presionada la tecla, se mantendrá repitiendo la entrada.

Method.xml

Este archivo le dice al sistema los subtipos del método de entrada que están disponibles. Sólo incluyo una versión mínima aquí.

 <?xml version="1.0" encoding="utf-8"?> <input-method xmlns:android="http://schemas.android.com/apk/res/android"> <subtype android:imeSubtypeMode="keyboard"/> </input-method> 

4. Agregue el código Java para manejar la entrada de clave

Cree un nuevo archivo Java. Llamémosle MyInputMethodService . Este archivo lo ata todo. Maneja la entrada recibida desde el teclado y la envía a cualquier vista que la esté recibiendo (un EditText , por ejemplo).

 public class MyInputMethodService extends InputMethodService implements KeyboardView.OnKeyboardActionListener { @Override public View onCreateInputView() { // get the KeyboardView and add our Keyboard layout to it KeyboardView keyboardView = (KeyboardView) getLayoutInflater().inflate(R.layout.keyboard_view, null); Keyboard keyboard = new Keyboard(this, R.xml.number_pad); keyboardView.setKeyboard(keyboard); keyboardView.setOnKeyboardActionListener(this); return keyboardView; } @Override public void onKey(int primaryCode, int[] keyCodes) { InputConnection ic = getCurrentInputConnection(); if (ic == null) return; switch (primaryCode) { case Keyboard.KEYCODE_DELETE: CharSequence selectedText = ic.getSelectedText(0); if (TextUtils.isEmpty(selectedText)) { // no selection, so delete previous character ic.deleteSurroundingText(1, 0); } else { // delete the selection ic.commitText("", 1); } ic.deleteSurroundingText(1, 0); break; default: char code = (char) primaryCode; ic.commitText(String.valueOf(code), 1); } } @Override public void onPress(int primaryCode) { } @Override public void onRelease(int primaryCode) { } @Override public void onText(CharSequence text) { } @Override public void swipeLeft() { } @Override public void swipeRight() { } @Override public void swipeDown() { } @Override public void swipeUp() { } } 

Notas:

  • El OnKeyboardActionListener escucha la entrada de teclado. También se requieren todos los métodos vacíos en este ejemplo.
  • InputConnection es lo que se utiliza para enviar entrada a otra vista como un EditText .

5. Actualizar el manifiesto

Pongo este último en lugar de primero porque se refiere a los archivos ya agregados anteriormente. Para registrar su teclado personalizado como teclado del sistema, debe agregar una sección de service al archivo AndroidManifest.xml . Póngalo en la sección de application después de la activity .

 <manifest ...> <application ... > <activity ... > ... </activity> <service android:name=".MyInputMethodService" android:permission="android.permission.BIND_INPUT_METHOD"> <intent-filter> <action android:name="android.view.InputMethod"/> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method"/> </service> </application> </manifest> 

¡Eso es! Deberías poder ejecutar tu aplicación ahora. Sin embargo, no verás mucho hasta que habilites tu teclado en la configuración.

6. Active el teclado en Configuración

Cada usuario que desee utilizar su teclado tendrá que habilitarlo en la configuración de Android. Para obtener instrucciones detalladas sobre cómo hacerlo, consulte el siguiente enlace:

  • Cómo configurar el teclado predeterminado en tu teléfono Android

Aquí está un resumen:

  • Vaya a Configuración de Android> Idiomas e ingrese> Teclado actual> Elija teclados.
  • Debería ver su teclado personalizado en la lista. Permitirle.
  • Vuelva y seleccione de nuevo el teclado actual. Debería ver su teclado personalizado en la lista. Elígelo.

Ahora deberías poder usar tu teclado en cualquier lugar que puedas escribir en Android.

Estudio adicional

El teclado de arriba es utilizable, pero para crear un teclado que otras personas quieran usar probablemente tendrá que agregar más funcionalidad. Estudie los enlaces a continuación para aprender cómo.

  • Creación de un método de entrada (documentación de Android)
  • SoftKeyboard (código fuente de Android para un teclado personalizado de demostración)
  • Creación de un teclado Android personalizado (tutorial) ( código fuente )
  • Crear un teclado personalizado en Android (tutorial de tutsplus)
  • Cómo crear un teclado personalizado para Android (video de YouTube: es silencioso, pero siguiendo a lo largo es cómo aprendí por primera vez cómo hacerlo.)

Teclado en la aplicación

Esta respuesta indica cómo crear un teclado personalizado para utilizarlo exclusivamente en la aplicación. Si desea crear un teclado de sistema que pueda utilizarse en cualquier aplicación, consulte mi otra respuesta .

El ejemplo se verá así. Puede modificarlo para cualquier disposición de teclado.

Introduzca aquí la descripción de la imagen

1. Inicie un nuevo proyecto de Android

InAppKeyboard mi proyecto InAppKeyboard . Llame a su suyo lo que quiera.

2. Agregue los archivos de diseño

Diseño del teclado

Agregue un archivo de res/layout carpeta res/layout . Llamé a mi keyboard . El teclado será una vista compuesta personalizada que inflaremos de este archivo de diseño xml. Puede usar cualquier diseño que desee para organizar las claves, pero estoy usando un LinearLayout . Tenga en cuenta las etiquetas de merge .

Res / layout / keyboard.xml

 <merge xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button_1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="1"/> <Button android:id="@+id/button_2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="2"/> <Button android:id="@+id/button_3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="3"/> <Button android:id="@+id/button_4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="4"/> <Button android:id="@+id/button_5" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="5"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button_6" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="6"/> <Button android:id="@+id/button_7" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="7"/> <Button android:id="@+id/button_8" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="8"/> <Button android:id="@+id/button_9" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="9"/> <Button android:id="@+id/button_0" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="0"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button_delete" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:text="Delete"/> <Button android:id="@+id/button_enter" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="3" android:text="Enter"/> </LinearLayout> </LinearLayout> </merge> 

Disposición de la actividad

Para fines de demostración nuestra actividad tiene un solo EditText y el teclado está en la parte inferior. Llamé a mi vista de teclado personalizada MyKeyboard . El beneficio de poner todo nuestro código de teclado en una sola vista es que facilita su reutilización en otra actividad o aplicación.

Res / layout / activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.inappkeyboard.MainActivity"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#c9c9f1" android:layout_margin="50dp" android:padding="5dp" android:layout_alignParentTop="true"/> <com.example.inappkeyboard.MyKeyboard android:id="@+id/keyboard" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_alignParentBottom="true"/> </RelativeLayout> 

3. Agregue el archivo Java del teclado

Agregue un nuevo archivo Java. Llamé al mío MyKeyboard .

La cosa más importante a tener en cuenta aquí es que no hay enlace duro a cualquier EditText o Activity . Esto facilita su conexión a cualquier aplicación o actividad que lo necesite. Esta vista de teclado personalizado también utiliza una InputConnection , que imita la forma en que un teclado del sistema se comunica con un EditText . Así es como evitamos los enlaces duros.

MyKeyboard es una vista compuesta que infla el diseño de vista que definimos anteriormente.

MyKeyboard.java

 public class MyKeyboard extends LinearLayout implements View.OnClickListener { // constructors public MyKeyboard(Context context) { this(context, null, 0); } public MyKeyboard(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MyKeyboard(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs); } // keyboard keys (buttons) private Button mButton1; private Button mButton2; private Button mButton3; private Button mButton4; private Button mButton5; private Button mButton6; private Button mButton7; private Button mButton8; private Button mButton9; private Button mButton0; private Button mButtonDelete; private Button mButtonEnter; // This will map the button resource id to the String value that we want to // input when that button is clicked. SparseArray<String> keyValues = new SparseArray<>(); // Our communication link to the EditText InputConnection inputConnection; private void init(Context context, AttributeSet attrs) { // initialize buttons LayoutInflater.from(context).inflate(R.layout.keyboard, this, true); mButton1 = (Button) findViewById(R.id.button_1); mButton2 = (Button) findViewById(R.id.button_2); mButton3 = (Button) findViewById(R.id.button_3); mButton4 = (Button) findViewById(R.id.button_4); mButton5 = (Button) findViewById(R.id.button_5); mButton6 = (Button) findViewById(R.id.button_6); mButton7 = (Button) findViewById(R.id.button_7); mButton8 = (Button) findViewById(R.id.button_8); mButton9 = (Button) findViewById(R.id.button_9); mButton0 = (Button) findViewById(R.id.button_0); mButtonDelete = (Button) findViewById(R.id.button_delete); mButtonEnter = (Button) findViewById(R.id.button_enter); // set button click listeners mButton1.setOnClickListener(this); mButton2.setOnClickListener(this); mButton3.setOnClickListener(this); mButton4.setOnClickListener(this); mButton5.setOnClickListener(this); mButton6.setOnClickListener(this); mButton7.setOnClickListener(this); mButton8.setOnClickListener(this); mButton9.setOnClickListener(this); mButton0.setOnClickListener(this); mButtonDelete.setOnClickListener(this); mButtonEnter.setOnClickListener(this); // map buttons IDs to input strings keyValues.put(R.id.button_1, "1"); keyValues.put(R.id.button_2, "2"); keyValues.put(R.id.button_3, "3"); keyValues.put(R.id.button_4, "4"); keyValues.put(R.id.button_5, "5"); keyValues.put(R.id.button_6, "6"); keyValues.put(R.id.button_7, "7"); keyValues.put(R.id.button_8, "8"); keyValues.put(R.id.button_9, "9"); keyValues.put(R.id.button_0, "0"); keyValues.put(R.id.button_enter, "\n"); } @Override public void onClick(View v) { // do nothing if the InputConnection has not been set yet if (inputConnection == null) return; // Delete text or input key value // All communication goes through the InputConnection if (v.getId() == R.id.button_delete) { CharSequence selectedText = inputConnection.getSelectedText(0); if (TextUtils.isEmpty(selectedText)) { // no selection, so delete previous character inputConnection.deleteSurroundingText(1, 0); } else { // delete the selection inputConnection.commitText("", 1); } } else { String value = keyValues.get(v.getId()); inputConnection.commitText(value, 1); } } // The activity (or some parent or controller) must give us // a reference to the current EditText's InputConnection public void setInputConnection(InputConnection ic) { this.inputConnection = ic; } } 

4. Apunte el teclado hacia el EditText

Para teclados de sistema, Android utiliza un InputMethodManager para apuntar el teclado al EditText enfocado. En este ejemplo, la actividad tomará su lugar proporcionando el enlace desde el EditText a nuestro teclado personalizado a.

Dado que no estamos utilizando el teclado del sistema, debemos desactivarlo para evitar que aparezca cuando toquemos el EditText . En segundo lugar, necesitamos obtener el InputConnection del EditText y darlo a nuestro teclado.

MainActivity.java

 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EditText editText = (EditText) findViewById(R.id.editText); MyKeyboard keyboard = (MyKeyboard) findViewById(R.id.keyboard); // prevent system keyboard from appearing when EditText is tapped editText.setRawInputType(InputType.TYPE_CLASS_TEXT); editText.setTextIsSelectable(true); // pass the InputConnection from the EditText to the keyboard InputConnection ic = editText.onCreateInputConnection(new EditorInfo()); keyboard.setInputConnection(ic); } } 

Si su Actividad tiene varios EditTexts, entonces necesitará escribir código para pasar el InputConnection correcto de InputConnection al teclado. (Puede hacer esto agregando OnFocusChangeListener y OnClickListener a EditTexts. Vea este artículo para una discusión de eso.) También puede desear ocultar o mostrar su teclado en los momentos apropiados.

Terminado

Eso es. Debería poder ejecutar la aplicación de ejemplo ahora y ingresar o eliminar texto como desee. El siguiente paso es modificar todo para que se adapte a sus propias necesidades. Por ejemplo, en algunos de mis teclados he utilizado TextViews en lugar de Buttons porque es más fácil personalizarlos.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.