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

嵌套scrollview+RecycerView,奇怪的自动滚动行为[重复]

缪志新
2023-03-14

在一个视图分页程序中,我有几个片段,其中一个片段使用嵌套的scrollview和一个header和一个RecycerView:

<android.support.v4.widget.NestedScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/scrollview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.m360.android.fragment.Members.MemberDetailsFragment">

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

        <header/>

        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycler"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clipToPadding="false"
            android:paddingTop="0dp" />

    </LinearLayout>

</android.support.v4.widget.NestedScrollView>

标记“header”代表了一个复杂的布局,我不想在这里发布,因为它扩展了代码

当我在选项卡之间切换时,它会滚动到回收器视图。标题被隐藏了,我必须向上滚动才能看到它。

有什么原因吗?我不想在我的适配器中使用类型,如果我可以避免它。

共有1个答案

束俊材
2023-03-14

我们也有类似的问题。我们有一个垂直的RecycerView。这个垂直RecycerView的每个项都包含一个水平RecycerView,就像Android TV应用程序中一样。

当我们将支持库从23.4.0升级到24.0.0时,自动滚动突然出现了。特别是,当我们打开一个活动并返回时,垂直的RecycerView向上滚动,这样当前的水平的RecycerView行就不会被剪切,该行就完全显示出来了。

添加Android:descendantfocusability=“blocksdessions”可以解决这个问题。

然而,我找到了另一个解决方案,它也有效。在我们的示例中,垂直的RecycerView包含在FrameLayout中。如果我将android:focusableintouchmode=“true”添加到这个frameLayout中,问题就解决了。

这里甚至提到了第三种解决方案,它基本上包括调用子/innerRecycerViewsetfocusable(false)。我没试过这个。

顺便说一句,在AOSP上有一个开放的问题。

 类似资料:
  • 我用来定义的代码: 中的:

  • 问题内容: 我有一个具有 自动高度的UITableView自定义UITableViewCell设计 。 该行为是在my的第一次加载中UIViewController,UITableView显示带有部分文本的标签。然后,当我滚动 到底部然后滚动到顶部时,得到了所需的高度和文本外观。 这是先滚动后再滚动的外观(这是 我的实现的正确外观,但我删除了一些Lorem文本): 编辑1: Code: 在UI B

  • 问题内容: 我想用标题栏创建一个简单的框,其中包含标题和一些工具按钮。我有以下标记: 这个可以解决吗? 问题答案: 在最外面的div中指定宽度。如果内容div中的宽度表示此框的总宽度,则只需将其添加到最外面的div中,然后(可选)将其从内容中删除,如下所示:

  • 我在嵌套滚动视图中实现了一个回收视图。但是循环视图滚动到位置方法不起作用。 下面是我的示例代码 下面是滚动的方法

  • 这是我使用的一个引用,它解释了如何使一个div在其滚动条隐藏的情况下可滚动。唯一的区别是我有嵌套的div。检查我的小提琴 HTML: CSS: 像上面,我有一个溢出的水平div和我想隐藏它的滚动条。我必须使其仍然可滚动,因为否则将无法工作。 更新: 我已经读了所有的答案,但我仍然没有解决我的问题,也不知道是什么原因造成的。这是有麻烦的生活。基本上,我试图遵循这几乎完全相同的,但一定有一些原因,我的

  • 下面的代码是一个小示例,可以轻松重现问题。所以我有 String 类型的变量,它设置了默认值。我有3种方法: getter 塞特 将字符串转换为布尔值的方便方法 自省不会将getter作为readMethod返回,将setter作为WriteMethod返回。相反,它将isTest()方法作为readMethod返回。setter为空。 从文档中我了解到,如果类型是boolean,那么" is "