Как показать "окно / субактивность / диалог" поверх действия, но сохранить фокус в действии
Моя деятельность А - игра, и она выполняет некоторые фоновые операции. Когда я нажимаю кнопку в контекстном меню, я хочу открыть "маленькое окно / диалоговое окно / субактивность" (назовем его B), которое появляется поверх действия A и отображает некоторые данные об этих фоновых операциях. Но мне нужно сосредоточиться на упражнении А, чтобы продолжать взаимодействовать с ним (играть в игру).
По сути, я хочу, чтобы во время игры я мог видеть отображение данных по кнопке B.
Я не совсем уверен, как это реализовать. После прочтения документации у меня есть следующие выводы:
- Я знаю, что не могу использовать диалоги, потому что у меня есть фокус. Можно ли этого избежать?
- Использование субактивности с темой диалога - это еще один вариант, который выглядит заманчиво... но я считаю, что субактивность имеет фокус. То же самое.
- Мой последний вариант - попытаться добавить LinearLayout с моими данными в основной макет, "разделяя / разделяя" экран. Это не красиво, но, по крайней мере, я знаю, что это возможно. Что мне не нравится в этом подходе, так это то, что я использую ширину и высоту экрана.
Какие-либо предложения? Решения?
PS: я нашел здесь эту ветку, которая очень связана с моим вопросом:
2 ответа
Создать деятельность со стилем Theme.Dialog
, Это нормальное занятие, которое выглядит как диалог, в то же время будучи немодальным и принимая события.
Дополнительный улов в настройке WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
и сброс WindowManager.LayoutParams.FLAG_DIM_BEHIND
,
Посмотрите этот ответ для полного примера: временное немодальное диалоговое окно
Почему бы не использовать FrameLayout, который является частью вашей деятельности? Просто убедитесь, что это представление имеет более высокий индекс z (убедитесь, что вы объявляете его последним в макете XML или создаете его во время выполнения). Таким образом, вы никогда не покинете свою активность.