Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:Z-Order,具有屏幕宽的clickblocker视图_Android_View_Click_Z Order - Fatal编程技术网

Android:Z-Order,具有屏幕宽的clickblocker视图

Android:Z-Order,具有屏幕宽的clickblocker视图,android,view,click,z-order,Android,View,Click,Z Order,编辑:已解决。当我将所有自定义视图替换为“视图”按钮时,问题消失了 我试图以编程方式创建一个屏幕大小的不可见视图,它应该捕获所有单击事件,从而阻止所有底层元素。但我有点麻烦 预期目标是,当用户单击某个按钮时,将创建一个菜单。当此菜单打开时,页面上的其他按钮应不再起作用。点击菜单会让事情发生,点击其他地方会让菜单消失,让其他元素再次工作 我已经成功地创建了屏幕范围的视图,每当用户单击按钮尚未覆盖的点时,它都会捕获单击并破坏菜单。但是,当用户确实单击包含按钮的点时,只处理按钮的onclick事件,而

编辑:已解决。当我将所有自定义视图替换为“视图”按钮时,问题消失了

我试图以编程方式创建一个屏幕大小的不可见视图,它应该捕获所有单击事件,从而阻止所有底层元素。但我有点麻烦

预期目标是,当用户单击某个按钮时,将创建一个菜单。当此菜单打开时,页面上的其他按钮应不再起作用。点击菜单会让事情发生,点击其他地方会让菜单消失,让其他元素再次工作

我已经成功地创建了屏幕范围的视图,每当用户单击按钮尚未覆盖的点时,它都会捕获单击并破坏菜单。但是,当用户确实单击包含按钮的点时,只处理按钮的onclick事件,而不处理我的clickblocker事件。应该是相反的。 这让我认为这是一个z顺序问题(但不是100%确定)。 不幸的是,我试图将目标锁定在不支持view.setZ()的旧版本上,而view.bringToFront()似乎并没有达到我想要的效果

以下是viewblocker的代码:

public class ClickBlockerView extends View{

    public ClickBlockerView(Context context) {
        super(context);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(C.GetWindowWidth(getContext()), C.GetWindowHeight(getContext()));
    }

    public static ClickBlockerView CreateClickBlocker(Context context){
        ClickBlockerView c = new ClickBlockerView(context);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        c.setLayoutParams(params);
        c.setId(R.id.clickBlocker);
        c.setClickable(true);
        return  c;
    }
}
我是这样称呼它的(从另一个角度):

有人知道如何解决这个问题吗?这个问题的其他解决方案也受到欢迎。不过我不想使用xml(它必须添加到每个活动中)

更新:

显然,z排序可以与微调器和复选框一起使用,但与按钮和我的自定义视图不同。奇怪的

更新2:

绘制时,将显示形状以正确填充屏幕,但它也会绘制在其他自定义视图的下方,即使它是稍后创建并放在前面的。 奇怪的是,尽管我没有修改这个clickblocker的代码,但同时click功能已经完全停止了

private void createMenuAndClickblocker(){
       ClickBlockerView clickblocker = ClickBlockerView.CreateClickBlocker(getContext());
       clickblocker.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    destroyMenu();
                }
        });
        ((RelativeLayout) this.getParent()).addView(clickblocker);
        clickblocker.bringToFront();

        createMenu();
        requestLayout();
    }