При добавлении представления в окно с помощью WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY событие касания не отображается

Мне нужно отобразить мой вид поверх приложения номеронабирателя, поэтому я использовал для этой цели TYPE_PHONE, который является сенсорным, но все же на некоторых устройствах, таких как приложение набора номера Nexus 5, устройство скрывает его.

Попытка с использованием TYPE_SYSTEM_OVERLAY делает вид видимым в верхней части приложения номеронабирателя, но касания там нет. Любая помощь по этому поводу будет отличной.

1 ответ

Решение

После долгих поисков вышеуказанной проблемы я нашел решение сам. Вот как я сделал вид, чтобы быть на вершине всего внутри устройства, а также сделать его сенсорным, что было невозможно с TYPE_SYSTEM_OVERLAY.

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                        WindowManager.LayoutParams.MATCH_PARENT,
                        WindowManager.LayoutParams.WRAP_CONTENT,
                        WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
                                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                        PixelFormat.TRANSPARENT);

params.gravity = Gravity.TOP | Gravity.CENTER_HORIZONTAL;
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(view, params);
Другие вопросы по тегам