Кнопка «Назад» не работает при наложении макета с помощью WindowManager. Как заставить это работать?

#android

#Android

Вопрос:

 LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);

    params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY | WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSLUCENT);
    params.gravity = Gravity.RIGHT | Gravity.TOP;
    myview = li.inflate(R.layout.locked_layout, null);
    wm.addView(myview);
  

Это код, который я использовал для наложения макета на экран. Работает только кнопка «ДОМОЙ». Но кнопка «НАЗАД» не работает. Я хочу, чтобы работали оба. Я что-нибудь упускаю? Пожалуйста, помогите мне!! Заранее спасибо

Ответ №1:

Добавьте также этот флаг, мой друг:

 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
  

Комментарии:

1. Большое спасибо, вы спасли мой день!

2. Мне нужно установить setOnTouchEvent на мой взгляд, так как я могу решить эту проблему. Спасибо!

3. Сработало как шарм 🙂

4. У меня это есть, и все равно приложение зависает при нажатии кнопки «Назад», в чем корень проблемы?

Ответ №2:

У меня это сработало!!

     LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
    WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

    WindwoManager.LayoutParams params = new WindowManager.LayoutParams(       
            WindowManager.LayoutParams.TYPE_PHONE,     
            WindowManager.LayoutParams.FLAG_FULLSCREEN |                       
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.RGBA_8888);      
    params.gravity = Gravity.RIGHT | Gravity.TOP;
  

Комментарии:

1. Константа 1064 соответствует WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE и 1 to PixelFormat.RGBA_8888 . Было бы понятнее указать их в коде.