Intereting Posts
Как получить ширину экрана в дюймах в ANDROID? Как центрировать несколько видов вместе, используя ConstaintLayout? Включение / выключение роуминга данных Каково максимальное количество символов, которое может отображаться в уведомлении Android и iOS? Android – мягкая клавиатура выталкивает макет моей активности из экрана Проверка выполнения CountDownTimer Разница между потоком пользовательского интерфейса и рабочим потоком в Android? Обнаружение, когда системные кнопки видны при использовании режима «immersive» Robolectric + Eclipse Не можете найти ресурсы? Множество PlaceAutoCompleteFragment открывается, когда вы нажимаете на него очень быстро Intellij IDEA 14 – Пакет R не существует Как показать соответствующий значок в диалоговом окне Как добавить несколько инструментов: заменить на приложение манифеста Android? Android Spannablecontent с закругленными углами Разделить ActionBar в два раза больше значков

Почему мое меню редактирования / вставки EditText находится под EditText? Как изменить всплывающее окно z-порядка?

ЗАМЕТКА

Если кто-то знает, как заказать (z-order) Windows, добавленный через windowmanager, я также буду принимать ответ, потому что он ответит на все вопросы. На самом деле, я только нахожу, чтобы сделать windowManager.removeView(MyView) сразу после windowManager.addView(MyView) чтобы поставить представление перед другим, но это не идеально, потому что он визуально удаляет и добавляет представление. Это выглядит сумасшедшим, что их нет встроенной функции в android, чтобы сделать такое простое мышление.


Я создаю представление (linearlayout), которое содержит EditText. Я добавляю это представление в действие через WindowManager.addView (view, Layout_Params);

Но у меня проблема, что каждое всплывающее окно edittext будет генерировать (например, меню «Копировать / Пропустить» или «Меню предложения слов») будет под другими представлениями, даже при их собственном представлении EditText (а не на изображении edittext имеют прозрачный фон)

Также что-то немного странное, всплывающее окно генерируется последним EditText w Я буду

Введите описание изображения здесь

Введите описание изображения здесь

Введите описание изображения здесь

I создаю представления (то есть: LinearLayout) с параметрами макета тезисов:

 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; } 

И я показываю вид (который содержит только edittext) следующим образом:

  private final WindowManager mWindowManager; mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams lp = createLayoutParams(); mWindowManager.addView(view, lp); 

Так как сделать всплывающее окно, связанное с editText перед всем?

Этот вопрос также может помочь немного (о z-порядке окна): Как работает z-порядок просмотра (то есть: окно), добавленный через WindowManager?

Solutions Collecting From Web of "Почему мое меню редактирования / вставки EditText находится под EditText? Как изменить всплывающее окно z-порядка?"

Ожидается, что если вы увидите документацию DecorView, она даст вам фон текущего вида.

То, что вы делаете, – это запуск панели действий на декоре, следовательно, ее появление в фоновом режиме. Прочтите эту статью для получения более подробной информации http://www.curious-creature.com/2009/03/04/speed-up-your-android-ui/

Чтобы решить эту проблему, вам нужно получить текущее представление, для которого вы можете использовать View focusView = (View) yourParentView.getFocusedChild ();

Это может помочь вам, попробуйте.

Ключевым ответом является андроид: windowActionModeOverlay

В res / style.xml определить новую тему расширяет вашу оригинальную тему:

 <?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> 

Или просто добавьте строку true в свою тему, если вы уже определили ее.

Внесите свою активность в тему, определенную выше в AndroidManifest.xml:

 <activity android:name="you.AppActivity" android:theme="@style/ActionModeOverlay" > 

Попробуйте WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;

Вместо WindowManager.LayoutParams.TYPE_APPLICATION;

На самом деле их невозможно заказать (z-order) окна, добавленные через windowmanager. Единственный способ – удалить окно и добавить его обратно.