При добавлении представления в окно с помощью 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);