2010-11-02 15 views
5

Quiero desarrollar un teclado de reemplazo, pero me temo que Android asume que el "área" del teclado general será una forma rectangular única que se encuentra en la parte inferior de la pantalla.¿Cómo crear un teclado Android que no sea un rectángulo en la parte inferior de la pantalla?

¿Qué sucede si quiero que mi teclado tenga varias formas que no se colocan en la parte inferior de la pantalla? ¿Estoy condenado desde el principio o es posible hacer lo que quiero hacer?

En una nota relacionada, ¿qué sucede si solo quiero que mi teclado aparezca cuando el teléfono está en una orientación determinada pero cuando el teléfono está en una orientación diferente, se usa el teclado suave normal? De nuevo, ¿por suerte o posible?

¡salud!

+0

Me disculpo si realmente fue "caliente para crear" un reemplazo del teclado de Android. :) Interesante pregunta, por cierto. – MusiGenesis

+0

mwah, ja, ja, ja, pero acepto tu edición! –

Respuesta

4

El IME es solo una ventana. Está ubicado en relación con la parte inferior de la pantalla, por lo que no puedes controlarlo. Pero puedes dibujar lo que quieras en él, o no para los lugares que quieres que sean transparentes. Puede controlar la cantidad de aplicaciones que se alejan de su IME con esto: http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html#onComputeInsets(android.inputmethodservice.InputMethodService.Insets)

Android no permite que las ventanas decidan de una en una si los eventos serán manejados por ellos o enviados a la ventana detrás de ellos; el único control que tiene para evitar que los eventos sean consumidos por toda su ventana son las constantes Insets.touchableInsets para decirle al administrador de ventanas que permita que los eventos fuera de las inserciones dadas pasen a lo que está detrás de ellos.

+0

Hola, gracias Hackbod, eso es lo que temía. Desde mi punto de vista, al menos, sería genial si pudiera crear una ventana de teclado -o, para el caso, ventana (s) flotante (s) para cualquier tipo de propósito- que pudiera aparecer en cualquier lado de la pantalla, y reducir el tamaño de la ventana. espacio disponible para la Actividad subyacente en el área que no sobrescriben. –

+0

Esta es una posibilidad remota, pero ¿sería posible usar una actividad de pantalla completa transparente como un IME falso? Envía los caracteres escritos a la Actividad inmediatamente debajo de ella? ¿O puedes pensar en alguna otra forma de piratear lo que quiero? –

+0

OK, veo el bit en su enlace sobre Fullscreen IME. Supongo que esto me permitiría técnicamente hacer lo que quiero hacer, sin la interacción subyacente sobre la marcha con la Actividad subyacente. Esa última parte puede ser un factor decisivo, es difícil de decir sin intentar ver cómo es. –

0

Es de suponer que podría crear un rectángulo donde quiera y hacer fragmentos transparentes. Sin embargo, no estoy seguro de cómo pasar eventos de IU a la actividad debajo de tu teclado.

De todos modos, hay un softkeyboard sample que probablemente sea bastante útil.

Como yo lo veo, hay dos maneras en que puede manejar la cosa de UI. - Pase eventos a la actividad subyacente cuando "deberían pasar" ... Como su teclado puede tener su propio proceso, esto podría ser un poco espinoso. - Haga que su teclado salga de más de una región rectangular, de manera que los eventos de la IU pasen naturalmente. No estoy seguro de si eso es posible. Todavía soy bastante nuevo en el desarrollo de Android.

+0

Según tengo entendido, las actividades son a pantalla completa y el teclado y algunas otras cosas similares son actividades distintas a Actividades. Estos "algo más" están diseñados para funcionar en la parte superior de las Actividades de manera que el área que no ocultan sea utilizable. –

+0

SIN EMBARGO- ¿Estas 'actividades distintas' tienen que ser un rectángulo en la parte inferior de la pantalla? Debido a que observa cuando aparece el teclado virtual típico, empuja los cuadros de entrada de texto hacia arriba para que sean visibles en la mitad superior de la pantalla que no está cubierta por el teclado. Si no quiero que las partes de mi teclado aparezcan en la parte inferior, ¿cómo funciona esa interacción con los campos de entrada subyacentes? ¿Los desarrolladores de Android han hecho suposiciones sobre la forma y la ubicación del teclado que hacen que la forma y ubicación no predeterminadas sean poco prácticas/imposibles? –

Cuestiones relacionadas