【问题标题】:Make Layout Non Clickable But Children Clickable使布局不可点击但儿童可点击
【发布时间】: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


【解决方案1】:

@Nicolas 您正在创建一个未添加到父布局的相对布局。只需使用 relativeLayout 和 imageView 创建一个 xml。在 java 代码中设置 imageView 的 onClickListener。通过这个,父布局将是不可点击的,只有 imageview 是可点击的

【讨论】:

  • 我可能应该提到我在服务中执行此操作,因此我仍然必须将 xml 文件膨胀到会占据屏幕的视图。因此,我仍然会遇到与在 WindowManager.LayoutParams 中使我正在膨胀的视图可点击的问题相同的问题,以确定我膨胀的图像视图是否可点击。如果我让视图可点击,那么我不能点击它下面,这是我试图避免的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
相关资源
最近更新 更多