【发布时间】:2017-04-27 23:48:16
【问题描述】:
我一直在研究系统覆盖,我发现使用 WindowManager.LayoutParams x 和 y 在屏幕上移动我的 imageview 很麻烦,所以我决定制作一个具有设备高度的 RelativeLayout我的图像视图。唯一的问题是我想让布局不可点击,以便可以点击它下面的活动,但不能点击 imageview 本身,因为它启动了一个活动。有没有办法做到这一点?到目前为止,这是我的代码
final RelativeLayout floaterLayout = new RelativeLayout(getApplicationContext());
//this layout makes the relativelayout non clickable so that the activity below it can be clicked but it doesn't allow any children to be clicked either.
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN + WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL + WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, PixelFormat.TRANSLUCENT);
params.height = 2560;
params.y = 0;
floaterLayout.setBackgroundColor(Color.RED);
floaterLayout.setAlpha(0.5f);
floaterLayout.setLayoutParams(params);
((WindowManager) getSystemService(Context.WINDOW_SERVICE)).addView(floaterLayout, params);
ImageView view = new ImageView(getApplicationContext());
Util.setImageDrawable(view, R.drawable.floater_dots);
floaterLayout.addView(view);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do stuff
}
});
【问题讨论】:
-
据我了解,您的要求是您希望相对布局不可点击,并且要点击 imageview 等子项,对吗?如果是这样,您可以将 xml 中的可点击属性设置为 false 以进行相对布局,并将 setOnClickListener 设置为 java 代码中的 imageView
-
在我上面的代码中,我确实将我的 relativelayout 设置为不可点击,这很有效。当我尝试在我的模拟器中单击它时,它不会单击这是我的目标的一半,但我希望该布局的任何子级都是可单击的,当我尝试在子级的 onClick 中执行某些操作时,这不起作用。
标签: java android android-layout android-imageview