当前位置: 首页 > 知识库问答 >
问题:

如何从ScrollView内部的RecyclerView中删除焦点?

蒋岳
2023-03-14

我有一个包含ImageView和RecyclerView的Scrollview。如果导航抽屉打开然后关闭了RecyclerView自动滚动到顶部,如何停止?

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/scrollViewMain"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

       <ImageView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/imageView_main_icons_line"
           android:src="@drawable/main_line" />

              ...


       <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView_activity_main_passenger_log"
            android:paddingBottom="2dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

    </LinearLayout>
</ScrollView>
</RelativeLayout>

共有3个答案

农明辉
2023-03-14

从这里查看clearFocus(),Android开发文档。

您可以将DrawerListener设置为您的抽屉菜单,并使用onDrawerStateChanged()或此处的一些其他选项在RecyclerView上调用clearFocus()。

孙财
2023-03-14

这是因为RecyclerView始终设置:

setFocusableInTouchMode(true);

这是在其构造函数中硬编码的。

因此,如果您将这些属性应用于XML中的RecycleView

android:focusable="false"
android:focudeableInTouchMode="false"

那将是无用的,你最终会得到recycleView。isFocusable()=真。。。

因此,最优雅的解决方案是为RecyclerView的父级禁用foucusable。

<LinearLayout
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:descendantFocusability="blocksDescendants"
    ...
    >
    <android.support.v7.widget.RecyclerView
        ...
    />
/>

或者你可以简单地设置可聚焦(false)

齐磊
2023-03-14

recyclerView导致的此问题具有默认焦点。

解决方案

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants"
    android:orientation="vertical">

将android:descendantFocusability=“blocksDescendants”添加到scrollView的即时布局中

 类似资料:
  • 我正在使用最新的支持设计(),23.2版本中的支持设计应该已经解决了ScrollView内部的RecyclerView问题。RecyclerView和ExpandableListView滚动都能很好地工作。但是当ExpandableListView太长时,我希望能够向上滚动布局,以便可以看到其余部分时,scrollview就无法工作。 片段: xml:

  • 我有一个数组像 现在我要移除cartItem对象中的一个产品。我试过这个方法,但是更新后它也把原来的cartitem弄得一塌糊涂。 最后,原始的cartItem对象也没有显示任何东西。 我想要的是从products数组中移除一个产品,并发送回剩余的数组。

  • 我试图在滚动视图中显示水平的recyclerview项和垂直的recyclerview项 即使我使用android:fillViewport=“true”,Scrollview也无法工作

  • 我在ScrollView中的ConstraintLayout中有一个floatingActionButton 问题是按钮随UI上下滚动 PS:我不知道这是否重要,但是scrollView在一个drawerLayout里面

  • 问题内容: 想象一下,我有以下类似的东西修改 如何在不影响任何子元素的情况下从DOM中仅删除(仅文本)“第一”,“第二”和“第三”。 问题答案: 如果要删除所有子文本节点,则可以使用,然后将匹配集减少为仅文本节点: 注意 :这将保留子元素上所有现有的事件处理程序,使用答案不会做(因为从DOM中删除了这些元素并重新添加了这些元素)。 注2 :一些链接的问题中的答案显示的代码与我的答案中的代码相似,但

  • 第一张照片就是我想要的。第二张图是我已经实现的。如您所见,TextInputLayout底部有一个填充,使灰色背景溢出edittext行。 请不要建议使用负边距或填充,因为它在较新的API中不起作用。 这是我为第一个文本输入布局准备的XML。