Android-线性布局的默认onClickListener委托点击?

问题描述 投票:-1回答:1

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

[每当用户单击地图但不单击弹出窗口时,弹出窗口均被关闭。

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

但是,通过某种方式,通过设置。 pupup.setOnClickListener(null)解决了该问题,不再委托点击事件。

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

对此有何见解?

android android-linearlayout onclicklistener ontouchlistener delegation
1个回答
0
投票

之所以这样,是因为无论您设置还是删除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;
    }
© www.soinside.com 2019 - 2024. All rights reserved.