叠加层(按钮始终在顶部)

时间:2020-06-04 10:06:59

标签: java android android-studio

我有一些用于创建Android Java应用程序的代码,我目前正在尝试在屏幕上显示一个包含一些文本的按钮,我不需要该按钮进行交互,只需要按住即可文字,

我目前正在使用https://gist.github.com/bjoernQ/6975256的演示代码来工作,因此可以使用某些功能,例如能够将按钮移动到我希望的固定位置。

一切正常,但是与背景进行交互时遇到问题,我无法使用任何底层屏幕,只能与顶部和底部的状态栏和快捷方式栏进行交互,

非常感谢您的帮助

@Override
public void onCreate() {
    super.onCreate();
    int LAYOUT_FLAG;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        LAYOUT_FLAG = LayoutParams.TYPE_APPLICATION_OVERLAY;
    } else {
        LAYOUT_FLAG = LayoutParams.TYPE_PHONE;
    }

    mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

    mOverlayView = new Button(this);
    mOverlayView.setText("test");
    mOverlayView.setOnTouchListener(this);
    mOverlayView.setBackgroundColor(Color.WHITE);
    mOverlayView.setOnClickListener(this);



    final LayoutParams params = new LayoutParams(
            LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT,
            LAYOUT_FLAG,
            LayoutParams.FLAG_NOT_FOCUSABLE |
                    LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSLUCENT);
    params.gravity = Gravity.LEFT | Gravity.TOP;
    params.x = 0;
    params.y = 0;

    mWindowManager.addView(mOverlayView, params);

    topLeftView = new View(this);
    LayoutParams topLeftParams = new LayoutParams(
            LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT,
            LAYOUT_FLAG,
            LayoutParams.FLAG_NOT_FOCUSABLE |
                    LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSLUCENT);
    topLeftParams.gravity = Gravity.LEFT | Gravity.TOP;
    topLeftParams.x = 0;
    topLeftParams.y = 0;
    topLeftParams.width = 0;
    topLeftParams.height = 0;
    mWindowManager.addView(topLeftView, params);
}

0 个答案:

没有答案