¿Por qué mi menú de edición / copia de EditText se encuentra debajo de EditText? ¿Cómo cambiar el orden z de la ventana emergente?
NOTA
Si alguien sabe cómo ordenar (z-orden) Windows añadido a través de windowmanager, también aceptará la respuesta porque es respuesta a toda la pregunta. En realidad solo encuentro hacer windowManager.removeView(MyView)
siguiendo immediatly por windowManager.addView(MyView)
para poner una vista delante de la otra, pero esto no es ideal porque es visualmente eliminar y agregar la vista. Se vea loco que su no es construir en función en android para hacer una simple pensar.
- Android Animation para cargar viewgroup / layout en arrastrar / deslizar la vista (Button)
- Android Salir del modo de pantalla completa
- Pantalla completa en WindowManager
- ¿Es posible mostrar siempre la barra de acción cuando se utiliza adjustPan como modo de entrada suave?
- Recepción de la barra de estado oculta / entrada de un evento de actividad de pantalla completa en un servicio
Creo una vista (linearlayout) que contiene un EditText. Añado esta vista en la actividad a través de WindowManager.addView (view, Layout_Params);
Pero tengo el problema que cada popup que el edittext generará (como el menú de la copia / pasado o del menú de la sugerencia de la palabra) estará bajo otras vistas, incluso incluso su poseer la opinión de EditText (no en la imagen el edittext tiene un fondo transparente)
Yo seré Yo estaré
I crear las vistas (es decir: LinearLayout) con estos params de diseño:
protected WindowManager.LayoutParams createLayoutParams() { WindowManager.LayoutParams p = new WindowManager.LayoutParams(); p.gravity = Gravity.LEFT | Gravity.TOP; p.width = 0; p.height = 0; p.format = PixelFormat.TRANSLUCENT; p.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED; p.flags = NOT_FOCUSABLE_FLAGS; // TYPE_APPLICATION allows for popups in browser windows (like edit menus) p.type = WindowManager.LayoutParams.TYPE_APPLICATION; p.token = null; return p; }
Y muestro la vista (que contienen sólo un edittext) como este:
private final WindowManager mWindowManager; mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams lp = createLayoutParams(); mWindowManager.addView(view, lp);
Así que ¿cómo hacer que el popup conectado a la editText delante de todo?
Esta pregunta también puede ayudar un poco (sobre el orden z de la vista de la ventana): ¿Cómo trabajar el orden z de la vista (es decir: ventana) añadido a través de WindowManager?
- Caught a RuntimeException de la implementación de stub de enlace cuando intercambia datos en arrayadapter
- El bloqueo del teclado se muestra brevemente antes de que se inicie Actividad al utilizar FLAG_SHOW_WHEN_LOCKED
- Mantener un seguimiento de la vista agregada a WindowManager (no función findViewById ()?)
- Superponer una capa Transparente de pantalla completa en Android 4.4 (KitKat)
- WindowManager.LayoutParams ¿por qué hay un método setTitle?
- Superposición de la barra de navegación de Android
- Actividad de Android sobre la pantalla de bloqueo predeterminada
- ¿Qué es WindowManager en android?
Esto se espera, si usted ve la documentación de DecorView, le da el fondo de la vista actual.
Lo que estás haciendo es iniciar la barra de acción en el decorview, por lo tanto, su llegada en el fondo. Lea este artículo para más detalles http://www.curious-creature.com/2009/03/04/speed-up-your-android-ui/
Para resolver este problema, necesitas obtener la vista actual, para la cual puedes usar View focusedView = (View) yourParentView.getFocusedChild ();
Es posible que te ayude, pruébalo.
La respuesta clave es android: windowActionModeOverlay
In res / style.xml define un nuevo tema que extiende tu tema original:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.Black.NoTitleBar.ActionModeOverlay" parent="android:Theme.Black.NoTitleBar"> <item name="android:windowActionModeOverlay">true</item> </style> </resources>
O simplemente añadir una línea verdadera en su tema si ya ha definido uno.
Haga que su actividad utilice el tema definido anteriormente en AndroidManifest.xml:
<activity android:name="you.AppActivity" android:theme="@style/ActionModeOverlay" >
Pruebe WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
En lugar de WindowManager.LayoutParams.TYPE_APPLICATION;
En realidad, no es posible ordenar (z-order) ventanas añadidas a través de windowmanager. La única manera es quitar la ventana y agregarla de nuevo.
- Uso de una base de datos SQLite en Libgdx
- ¿Tiene el sistema operativo Android archivos como / etc / passwd, / etc / shadow y / etc / group?