Disposición POPUP del teclado suave
Estoy desarrollando un teclado suave y lo hago bien, pero no sé cómo personalizar el diseño emergente para una pulsación larga.
Mi KeyboardView:
<?xml version="1.0" encoding="UTF-8"?> <android.inputmethodservice.KeyboardView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/keyboard" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:keyPreviewLayout="@layout/preview" android:keyBackground="@drawable/key_selector" android:shadowRadius="0.0" android:keyTextColor="#000000" />
Mi diseño de teclado:
<?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:keyHeight="10%p"> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="113" android:keyLabel="q" /> <Key android:codes="119" android:keyLabel="w" /> <Key android:codes="101" android:keyLabel="e" /> <Key android:codes="114" android:keyLabel="r" /> <Key android:codes="116" android:keyLabel="t" /> <Key android:codes="121" android:keyLabel="y" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="yýÿ"/> <Key android:codes="117" android:keyLabel="u" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="uúùũûü"/> <Key android:codes="105" android:keyLabel="i" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="iíìĩîï"/> <Key android:codes="111" android:keyLabel="o" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="oóòõôö" /> <Key android:codes="112" android:keyLabel="p" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="97" android:keyLabel="a" android:keyEdgeFlags="left" android:horizontalGap="5%p" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="aáàãâä"/> <Key android:codes="115" android:keyLabel="s" /> <Key android:codes="100" android:keyLabel="d" /> <Key android:codes="102" android:keyLabel="f" /> <Key android:codes="103" android:keyLabel="g" /> <Key android:codes="104" android:keyLabel="h" /> <Key android:codes="106" android:keyLabel="j" /> <Key android:codes="107" android:keyLabel="k" /> <Key android:codes="108" android:keyLabel="l" /> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="3" android:keyIcon="@drawable/keyboard_shift_off" android:keyHeight="7.6%p" android:keyWidth="13.7%p"/> <Key android:codes="122" android:keyLabel="z" android:horizontalGap="1%p"/> <Key android:codes="120" android:keyLabel="x" /> <Key android:codes="99" android:keyLabel="c" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="cç"/> <Key android:codes="118" android:keyLabel="v" /> <Key android:codes="98" android:keyLabel="b" /> <Key android:codes="110" android:keyLabel="n" android:popupKeyboard="@xml/keyboard_popup" android:popupCharacters="nñ"/> <Key android:codes="109" android:keyLabel="m" /> <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete_dim" android:keyHeight="7.6%p" android:keyWidth="13.7%p" android:horizontalGap="1%p"/> </Row> <Row android:verticalGap="1%p" android:horizontalGap="0.5%p" android:keyHeight="8%p" android:keyWidth="9.6%p"> <Key android:codes="-16" android:keyIcon="@drawable/keyboard_symbol" android:keyHeight="7.6%p" android:keyWidth="18.7%p"/> <Key android:codes="44" android:keyLabel="," android:horizontalGap="1%p"/> <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_feedback_space" android:keyWidth="40%p"/> <Key android:codes="46" android:keyLabel="."/> <Key android:codes="-3" android:keyIcon="@drawable/keyboard_go" android:keyHeight="7.6%p" android:keyWidth="18.5%p" android:horizontalGap="1%p"/> </Row>
El popup del teclado XML:
<?xml version="1.0" encoding="utf-8"?> <Keyboard xmlns:android="http://schemas.android.com/apk/res/android" android:keyWidth="10%p" android:keyHeight="10%p"> </Keyboard>
Intenté poner las características de keyBackground y del fondo por todas partes, pero no con éxito. Traté de poner:
- no puede seleccionar la palabra china cuando está en modo horizontal usando la entrada de google de android
- Cubierta del teclado de Android EditText cuando hago clic en él segunda vez
- ¿Cómo hacer clic en el botón de "búsqueda" del teclado con Robotium?
- Android mover la disposición hasta cuando el teclado suave se muestra con viewpagers
- VS emulador para Android deja de responder al teclado
android:popupLayout="@layout/keyboard"
… En el keyboardView pero obtener nullpointer, tal vez estoy poniendo un error XML en ese parámetro?
En el popup de teclado XML que pongo aquí:
android:popupKeyboard="@xml/keyboard_popup"
Puedo cambiar el tamaño de la disposición, el tamaño dominante, la abertura dominante, y otras cosas, pero no puedo cambiar los colores o los fondos.
La vista previa de la clave también lo está haciendo bien, lo puse en el keyboardView :
android:keyPreviewLayout="@layout/preview"
…Y funciona. Creo que el popup debe ser de la misma manera, pero no lo es.
¿Cómo puedo personalizar la ventana emergente que aparece durante una pulsación larga?
- Cómo detectar qué aplicación se abre en android
- Cómo ocultar softkeyboad cuando se inicia la actividad en android?
- EditText oculto por el teclado cuando android: gravity = "center" - Android
- La entrada del teclado de hardware pierde el foco
- ¿Cómo evitar que el teclado oculte mi EditText?
- Cómo mostrar el teclado virtual cuando edittext está enfocado
- Accesos directos de teclado personalizados
- Android: problemas de edittext y de teclado multilínea
Bueno, no es exactamente lo que estaba buscando, pero esto resuelve el problema.
Hice mi propia vista de teclado e hizo una ventana emergente para mostrar cuando una tecla es presionada durante mucho tiempo.
public class MyKeyboardView extends KeyboardView{ @Override protected boolean onLongPress(final Key popupKey) { final View custom = LayoutInflater.from(context) .inflate(R.layout.popup_layout, new FrameLayout(context)); popup = new PopupWindow(context); popup.setWidth(WindowManager.LayoutParams.WRAP_CONTENT); popup.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); popup.showAtLocation(this, Gravity.NO_GRAVITY, popupKey.x, popupKey.y-50); } }
De esta manera usted puede personalizar el popup de cualquier manera que desee en el xml.
Pero esta no es la respuesta correcta, si usted sabe una mejor manera de hacerlo, por favor responda a esta pregunta.
- Android: AppWidget con la vista personalizada no funciona
- FileInputStream a la matriz de bytes en la aplicación de Android