2012-07-12 14 views
5

Tratando de hacer un método de entrada de Android que sea transparente, es decir, el contenido subyacente se muestra en el teclado que estoy desarrollando.Transparente InputMethod para Android

Pude hacer que la Vista que paso al sistema sea transparente, creo, pero parece que hay algo debajo de mi vista que es de color blanco sólido y ofuscar el contenido subyacente.

En definitiva, es posible, estos tipos lo hacen:

https://play.google.com/store/apps/details?id=com.aitype.android.tablet.p&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5haXR5cGUuYW5kcm9pZC50YWJsZXQucCJd

+1

¿Alguna vez resolvió esto? Intento hacer lo mismo y me encuentro con el mismo problema. –

Respuesta

5

lo he descubierto! No estoy seguro de si así lo hicieron los muchachos de tu tienda de reproducción, pero esto fue lo que funcionó para mí. Además, me doy cuenta de que esta publicación tiene más de un año, pero todavía estoy respondiendo por si acaso alguien más descubre esto al intentar crear un teclado transparente.

El "algo" bajo su vista no es nada en realidad, es espacio vacío. Su teclado empujó toda la vista hacia arriba y fuera del camino para dejar espacio para su altura, dejando un espacio en blanco vacío detrás. Su teclado transparente deja ver este espacio en blanco.

Aquí está la solución: en lugar de devolver su vista en onCreateInputView, devuélvala enCreateCandidatesView. Esa es la vista que normalmente vive sobre el teclado y enumera las sugerencias de autocorrección. Pero vas a usar esto para albergar tu teclado actual.

La razón por la que desea que su teclado sea una vista de candidatos es porque la vista de entrada más a menudo empuja la vista subyacente hacia arriba. Las aplicaciones individuales pueden decidir cómo quieren comportarse cuando se muestra un teclado a través de android: windowSoftInputMode y la vista de entrada respeta su preferencia, pero la vista de candidatos siempre usa adjustPan.

De los documentos: "Tenga en cuenta que debido a que la vista candidata tiende a mostrarse y ocultarse mucho, no afecta la interfaz de usuario de la aplicación de la misma manera que la vista de entrada suave: nunca causará el cambio de tamaño de las ventanas de la aplicación, solo haga que se panoramicen si es necesario para que el usuario vea el foco actual ". http://developer.android.com/reference/android/inputmethodservice/InputMethodService.html

Por lo tanto, devolver su visión transparente de onCreateCandidatesView, devolver null de onCreateInputView y asegúrese de llamar setCandidatesViewShown (verdadero) para que sus candidatos vista muestra arriba (lo llamo en onWindowShown).

+0

¿Esto no significa que ocurrirá lo mismo si la entrada de la aplicación está en la parte inferior de su diseño? Para evitar oscurecerlo, Android hará una panorámica de la aplicación para que salga de la parte superior de la pantalla, dejando un espacio en blanco detrás del teclado. –

+0

Eso es lo que hará si usa onCreateInputView. Como ya expliqué, onCreateCandidatesView se comporta de manera diferente. Experimenta un poco con eso; verás que la entrada se mantiene donde está (a menos que, tal vez, esté en una vista de desplazamiento vertical. No lo he intentado) –

+0

No, si usas una vista de entrada, Android cambiará o cambiará el tamaño de la ventana según el la configuración de la actividad. De acuerdo con la documentación que citó, la vista de candidatos hará que la actividad "se panoramice si es necesario para que el usuario vea el foco actual". –

0

Normalmente, InputMethodServices usa el color de fondo, que es el mismo que el color de fondo de la aplicación de enlace actual. Si desea que esto sea transparente, creo que debería hacerlo como una estructura de ventana emergente, no como una ventana de entrada de método, creo.

Cuestiones relacionadas