下面给出一个 简单的配置:
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; layoutParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; layoutParams.format = PixelFormat.TRANSPARENT; layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.gravity = Gravity.TOP; layoutParams.flags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; // 让键盘自适应 需要加入以下内容 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { layoutParams.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; }
WindowParams = new WindowManager.LayoutParams(); int mMargin = mMarginLeft = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getContext().getResources().getDisplayMetrics()); mMarginTop = mStatusBarHeight + mMargin; mMarginRight = mScreenWidth - mBubbleEdgeSizeWidth - mMargin; mMarginBottom = mScreenHeight - mBubbleEdgeSizeHeight - mMargin; mWindowParams.x = mMarginRight; mWindowParams.y = mMarginBottom; mWindowParams.type = WindowManager.LayoutParams.TYPE_PHONE; mWindowParams.format = PixelFormat.RGBA_8888; mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; mWindowParams.gravity = Gravity.LEFT | Gravity.TOP; mWindowParams.width = mBubbleEdgeSizeWidth; mWindowParams.height = mBubbleEdgeSizeHeight;
mWindowParams.x = x; mWindowParams.y = y; LogUtil.d(TAG, "x = " + x + ", y = " + y); if (mWindowManager != null && isAttachedToWindow()) { mWindowManager.updateViewLayout(this, mWindowParams); }
layoutParams.flags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;