как сделать окно оверлея сенсорным

я делаю функцию в своем приложении, которая отображает окно наложения с текстом на экране, когда оно появляется, я пытаюсь коснуться этого окна, которого оно фактически касается за этим окном, мне нужно сделать это окно сенсорным, какие параметры я должен использовать? вот мой код

        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
        LayoutInflater screenNotificationInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
        layOverTopviewNotification =  screenNotificationInflater.inflate(R.layout.layout_notification, null);
        TextView layOverText = (TextView) layOverTopviewNotification.findViewById(R.id.notification_layout);
        layOverText.setText(athkarString[completed]);

        params = new WindowManager.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
                PixelFormat.TRANSLUCENT);
        params.x = 0;
        params.y = 0;
        params.gravity = Gravity.TOP;
        windowManager.addView(layOverTopviewNotification, params);

person Sherif Salem    schedule 16.01.2018    source источник
comment
я попробовал то, что вы предложили, и это не сработало со мной   -  person Sherif Salem    schedule 18.01.2018


Ответы (2)


Я наконец нашел ответ.

windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

inflater = LayoutInflater.from(PlayAthkarService.this);

textView = new TextView(PlayAthkarService.this);
textView.setBackgroundResource(R.drawable.floating_window);
textView.setTextSize(20);
textView.setText(athkarString[completed]);
textView.setTextColor(getResources().getColor(R.color.colorPrimaryDark));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    params = new WindowManager.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
        ViewGroup.LayoutParams.WRAP_CONTENT
        , WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
        PixelFormat.OPAQUE);
}else {
    params = new WindowManager.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
            , WindowManager.LayoutParams.TYPE_PRIORITY_PHONE,
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
            PixelFormat.OPAQUE);
}

params.gravity = Gravity.TOP | Gravity.RIGHT ;
params.x = 0;
params.y = 50;

windowManager.addView(textView, params);
person Sherif Salem    schedule 23.01.2018

Может быть, вы можете попробовать установить textview в touchListener и сделать textview полноэкранным

person leimenghao    schedule 23.01.2018