Android中第一次点击视图无法正常工作

3
我有一个 LinearLayout,需要在 NestedScrollView 内部的 CoordinatorLayout 中可点击。但大多数情况下,第一次点击它时它根本不起作用,我必须再点一次。

Click error

可点击的 LinearLayout

<LinearLayout
            android:id="@+id/qr_code_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:clickable="true"
            android:focusable="true"
            android:background="?android:attr/selectableItemBackground"
            tools:ignore="UseCompoundDrawables">

编辑:好奇怪,如果我在尝试点击视图之前等待几秒钟,它第一次就可以工作。只有在滚动到底部后立即单击它才会失败。


也许你第一次点击时会将clickable设置为true,然后第二次点击将其设为false,请仔细检查你的generateQr()函数,并让我知道结果。 - Elmira Frhn
2
问题出在焦点上。第一次点击会设置焦点,第二次才会实际调用onclick方法。如果想将focusable设置为true并仍然获取第一次点击,则查看文档中的setOnFocusChangeListener - Yupi
@ElmiraFrhn 我已经尝试删除设置 clickable 为 false 的那一行,但问题仍然存在。我不认为问题出在那个方法上。 :/ - Grender
@Yupi 我将 focusable 设置为 true,因为 Android Studio 建议在 clickable=true 的情况下这样做。即使我删除了 focusable=true,问题仍然存在。 - Grender
很遗憾,@T.M。 - Grender
显示剩余5条评论
1个回答

2
我遇到了同样的问题。在NestedScollView中,需要点击一个RelativeLayout元素。只要我没有滚动到最底部,这个元素就可以单击。如果我达到了底部,我需要两次点击,除非我等待几秒钟。
问题证明是在默认的AppBarLayoutlayout_behavior上。我使用了下面帖子中建议的自定义方法,问题得到了解决。 NestedScrollView滚动后onClick方法不能正常工作

终于!非常感谢!在修复之前的解决方法可以在这里找到。问题详情请见此处 - Grender

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接