Как отобразить полноэкранное окно TYPE_SYSTEM_ALERT? - PullRequest
10 голосов
/ 16 июня 2011

В настоящее время мне трудно отображать окно TYPE_SYSTEM_ALERT в полноэкранном режиме.Я хотел бы сделать это, чтобы иметь представление наложения, созданное из службы, поверх строки состояния, но не скрывая его.

Однако установка флажка FLAG_FULLSCREEN в параметрах макета создаваемого мной окна не работает.Я нашел разрешения STATUS_BAR и EXPAND_STATUS_BAR, но не смог найти, как их использовать.

Вот параметры:

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            PixelFormat.TRANSLUCENT);

    params.gravity = Gravity.RIGHT | Gravity.TOP;

    mWindowManager.addView(mOverlayView, params);

Есть идеи?

Спасибо

Ответы [ 2 ]

18 голосов
/ 26 июля 2011

Я нашел решение, пытаясь сделать что-то еще!

Чтобы окно TYPE_SYSTEM_ALERT располагалось поверх всех остальных окон И поверх строки состояния, необходимо добавить флаг FLAG_LAYOUT_IN_SCREEN, а не флаг FLAG_LAYOUT_FULLSCREEN:

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.WRAP_CONTENT,
        WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
        WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
        PixelFormat.TRANSLUCENT);

mWindowManager.addView(mOverlayView, params);
4 голосов
/ 20 октября 2011

В Ice Cream Sandwich больше не работает. Строка состояния закрывает окно TYPE_SYSTEM_ALERT. Но TYPE_SYSTEM_OVERLAY все еще отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...