2016-08-29 3 views
0

Я постоянно сталкиваюсь с проблемой, когда пользователь нажимает и удерживает кнопку питания, и отображается окно питания, но часть его скрыта за RelativeLayout. В настоящее время я устанавливаю RelativeLayout с помощью:Обращение с окнами системных окон на Android

WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE); 

     WindowManager.LayoutParams params = new WindowManager.LayoutParams(overlay_width, overlay_height, overlay_left, overlay_top, 
       WindowManager.LayoutParams.TYPE_TOAST, 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
       | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN 
       | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 
       | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,PixelFormat.RGBA_8888); 
     params.gravity = Gravity.TOP | Gravity.CENTER; 

Мне нужна эта view быть впереди всех, но я не хочу, чтобы показать перед системой окон, таких как, уведомление тянуть вниз бар и окно настроек питания.

Предложения?

ответ

0

Вместо использовании типа тост WindowManager.LayoutParams.TYPE_TOAST, использовать TYPE_PHONE или TYPE_SYSTEM_OVERLAY

Я использую этот код и его работы: -

wm = (WindowManager) 
    final WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(
      (int)desired_width, (int)desired_height, LayoutParams.TYPE_PHONE, // First one is width then is height 
      WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 
        |WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
      PixelFormat.TRANSLUCENT); 

Проверьте, если вы снова изменить тип где-то вниз

+0

Спасибо за ответ, я уже пытался добавить их ранее. Они просто больше не появляются. –