繁体   English   中英

Android - 代表点击的线性布局默认 onClickListener?

[英]Android - Linear Layout default onClickListener that delegates clicks?

我有一个 Map 视图,其中包含某些位置的一些引脚,每当按下某个位置时,都会显示底部的 LinearLayout 弹出窗口。

每当用户点击 map 而不是弹出窗口时,弹出窗口就会被关闭。

我们有一个错误,即每当单击弹出窗口时,它也会被关闭,可能是因为该事件被委托给第一响应者视图,即 map。

但是,不知何故,通过设置。 pupup.setOnClickListener(null)修复了该问题,并且不再委托单击事件。

我当然不明白这其中的逻辑,弹出窗口没有来自 XML 或代码的任何侦听器,并且通过调试hasOnClickListeners()解析为false所以我不明白为什么通过再次将其设置为null会删除任何委托。

对此有何见解?

发生这种情况是因为基础View.setOnClickListener将视图转换为clickable ,无论您设置还是删除OnClickListener

/**
     * Register a callback to be invoked when this view is clicked. If this view is not
     * clickable, it becomes clickable.
     *
     * @param l The callback that will run
     *
     * @see #setClickable(boolean)
     */
    public void setOnClickListener(@Nullable OnClickListener l) {
        if (!isClickable()) {
            setClickable(true);
        }
        getListenerInfo().mOnClickListener = l;
    }

删除不需要的委托的更好方法是调用

popup.setClickable(true)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM