我遇到了以下问题 - 我有一个视图,我正在放入WindowManager 我希望它可以从屏幕外转到屏幕中间。
不幸的是,无论我做什么,视图都坚持轴。
这是代码:
view = (FrameLayout) LayoutInflater.from(this).inflate(
R.layout.poke, null);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
300, 400, WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.verticalMargin = -10f;
params.gravity = Gravity.TOP;
windowManager.addView(view, params);
正如你所看到的,我尝试使用边距(放在那里减去它以使其上升)。
顺便说一下 - 我知道在dimen.xml中输入数字而不是dp是很难看的。它只是一个测试代码..
答案 0 :(得分:11)
我刚遇到同样的问题,实际的标志是:
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
所以你的代码应该是这样的:
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
300, 400, WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);
答案 1 :(得分:-1)
在您指定的标志中,添加另一个标志FLAG_LAYOUT_NO_LIMITS
。
这应该允许您将视图放在屏幕之外。
您的代码应如下所示:
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
300, 400, WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
PixelFormat.TRANSLUCENT);