Как показать "окно / субактивность / диалог" поверх действия, но сохранить фокус в действии

Моя деятельность А - игра, и она выполняет некоторые фоновые операции. Когда я нажимаю кнопку в контекстном меню, я хочу открыть "маленькое окно / диалоговое окно / субактивность" (назовем его B), которое появляется поверх действия A и отображает некоторые данные об этих фоновых операциях. Но мне нужно сосредоточиться на упражнении А, чтобы продолжать взаимодействовать с ним (играть в игру).

По сути, я хочу, чтобы во время игры я мог видеть отображение данных по кнопке B.

Я не совсем уверен, как это реализовать. После прочтения документации у меня есть следующие выводы:

  • Я знаю, что не могу использовать диалоги, потому что у меня есть фокус. Можно ли этого избежать?
  • Использование субактивности с темой диалога - это еще один вариант, который выглядит заманчиво... но я считаю, что субактивность имеет фокус. То же самое.
  • Мой последний вариант - попытаться добавить LinearLayout с моими данными в основной макет, "разделяя / разделяя" экран. Это не красиво, но, по крайней мере, я знаю, что это возможно. Что мне не нравится в этом подходе, так это то, что я использую ширину и высоту экрана.

Какие-либо предложения? Решения?

PS: я нашел здесь эту ветку, которая очень связана с моим вопросом:

2 ответа

Решение

Создать деятельность со стилем Theme.Dialog, Это нормальное занятие, которое выглядит как диалог, в то же время будучи немодальным и принимая события.

Дополнительный улов в настройке WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL и сброс WindowManager.LayoutParams.FLAG_DIM_BEHIND,

Посмотрите этот ответ для полного примера: временное немодальное диалоговое окно

Почему бы не использовать FrameLayout, который является частью вашей деятельности? Просто убедитесь, что это представление имеет более высокий индекс z (убедитесь, что вы объявляете его последним в макете XML или создаете его во время выполнения). Таким образом, вы никогда не покинете свою активность.

Другие вопросы по тегам