gpt4 book ai didi

android - 聚焦/点击recyclerview

转载 作者:行者123 更新时间:2023-11-29 19:09:36 28 4
gpt4 key购买 nike

我的布局中有一个 Recyclerview 和一个 EditText。

当我在 EditText 外部单击(即单击 Recyclerview)时,我希望 Recyclerview 获得焦点,而 EditText View 失去焦点。我无法让它工作。如果我在 Recyclerview 上方放置一个空的 FrameLayout,一切都会按预期工作,但我无法滚动 Recyclerview。为什么我不能将 Recyclerview 设置为可点击和可聚焦?

我在布局 xml 中设置了这些属性

android:clickable="true"
android:focusable="auto"
android:focusableInTouchMode="true"
android:focusedByDefault="true"

在我的 Recyclerview/FrameLayout 上。

最佳答案

您的 xml 标记无效的原因是 Android 处理点击的方式。每个事件都经过布局的 View 层次结构。首先,布局的最顶层父级接收事件。如果顶层布局不处理该事件,则会将其传递给其下的子级,依此类推。

在您的情况下,触摸事件首先发送到 FrameLayout,并且由于它已被处理,因此该事件不会到达 RecyclerView,因此您无法滚动。

处理触摸的正确方法是设置onTouchListener在 RecyclerView 和 subview 上。 RecyclerView 上的 onTouch 首先被调用。您在那里处理所有分析(您可以检查 x 和 y,还可以查看触摸是否落在 subview 内。您还可以动态更改每个 View 的焦点)。

如果您不希望 child 也处理触摸return true;。否则返回false;并且触摸事件会触发 subview 的onTouchListener。

关于android - 聚焦/点击recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45845893/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com