为什么当视图聚焦时 RecyclerView 会滚动到视图顶部

2023-12-21

I have RecyclerView,某种聊天。物品有TextViews布局颠倒了。下面的输入字段RecyclerView。当我滚动到底部时RecyclerView然后单击底部项目,它会获得焦点(仅当它获得焦点时,而不是每次单击时)并且RecyclerView自动滚动到该项目的顶部(当项目中的文本大于屏幕高度时)。

另外,当键盘可见并且我单击时RecyclerView项目 - 键盘隐藏并且回收器视图滚动到该项目的顶部,如何禁用这种行为?

我希望它在打开键盘时或单击某些项目时保持在同一位置。

用这个方法隐藏键盘

* * * * 
inputView.setOnFocusChangeListener((v, hasFocus) -> {
        if (!hasFocus){
            hideKeyboard();
        } 
    });
* * * * 

public void hideKeyboard() {
    InputMethodManager keyboard = (InputMethodManager)

    getSystemService(Context.INPUT_METHOD_SERVICE);
    keyboard.hideSoftInputFromWindow(inputView.getWindowToken(), 0);
}

And RecyclerView以这样的方式配置:

    RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.messageList);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
    linearLayoutManager.setReverseLayout(true);
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setAdapter(chatAdapter = new chatAdapter(getContext()));

如果我按下按钮并会打电话hideKeyBoard()通过单击该按钮 - 没关系,它不会滚动,但是当我单击 RecyclerView 项目时 - 它会获得焦点并滚动到该项目的顶部


我找到了一个解决方案,我扩展了 LinearLayoutManager 并重写了一些方法。现在它不会滚动到焦点项目。也许有人知道更好的解决方案?

public class NotScrollingToFocuesChildrenLinearLayoutManager extends LinearLayoutManager {
public NotScrollingToFocuesChildrenLinearLayoutManager(Context context) {
    super(context);
}

public NotScrollingToFocuesChildrenLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
    super(context, orientation, reverseLayout);
}

public NotScrollingToFocuesChildrenLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
}

@Override
public boolean onRequestChildFocus(RecyclerView parent, RecyclerView.State state, View child, View focused) {
    //return super.onRequestChildFocus(parent, state, child, focused);
    return true;
}

@Override
public boolean onRequestChildFocus(RecyclerView parent, View child, View focused) {
    //return super.onRequestChildFocus(parent, child, focused);
    return true;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么当视图聚焦时 RecyclerView 会滚动到视图顶部 的相关文章

随机推荐

  • AWS SAM - 模板没有任何连接到 Lambda 函数的 API

    因此 我尝试将现有的 Spring Boot 应用程序转换为 AWS lambda 并使用 SAM 我正在尝试使用 aws sam cli 在本地尝试我的 lambda 但是通过我的 SAM 设置 我得到 Template does not
  • 使用 printf 打印浮点数时额外的前导零?

    我希望能够编写一个如下所示的时间字符串 1 04 02 1 hours使用 printf 当我尝试写这样的东西时 printf d 02d 02 1f hours n 1 4 2 123456 I get 1 04 2 1 hours 是否
  • 在相同的 Javascript 上下文中创建带有附加 svelte 组件的窗口

    我使用 Sapper 框架 我想打开我自己的开发工具窗口 该窗口应该能够完全访问主窗口的 Javascript 对象 我正在尝试创建一个带有 svelte 组件和相同 Javascript 上下文的新窗口 var win window op
  • Django,UserChangeForm 错误

    我正在制作一个自定义用户表单 用户可以在其中更改一些详细信息 它有两个错误 但我无法理解问题所在 第一个问题是表单没有填写用户详细信息 这似乎是因为selfform初始化时为空 为什么 第二个问题是 当我提交此表单时 它会抱怨一些 KeyE
  • 在Eclipse中,如何运行修改上下文路径的Tomcat Maven插件

    在安装了 m2 Maven 插件的 Eclipse 中 我可以使用 Run on Server 命令通过 Eclipse WTP 在 Tomcat 中运行我的 web 应用程序 现在我想通过 Maven 修改上下文路径 所以我使用以下插件
  • params=True 的 Altair 回归变换:当有多个组时如何访问 r² 和 coeffs

    我在用transform regression在图表中创建回归线和相应的方程文本 对于单个回归 这工作得很好 但是对于 setgroupby something 选项 文本将绘制在彼此之上 我尝试使用构建字符串lineBreak n 但这没
  • Tomcat 7.0.73 不适用于 java 9

    由于 catalina sh 中的默认 java endorsed dirs 选项 无法使用 java 9 启动基于 tomcat 的应用程序 Djava endorsed dirs usr local share tomcat endor
  • MVC4 - 如何从剃刀视图调用控制器方法

    我是 MVC 新手 有人可以帮助我并解释如何从视图调用控制器方法吗 我有 HomeController 里面有 ShowFileContent 方法 HttpPost public ActionResult ShowFileContent
  • python:打开并读取包含德语变音符号的文件作为unicode

    我已经编写了程序来从文本文件中读取单词并将它们输入到 sqlite 数据库中并将它们视为字符串 但我需要输入一些包含德语变音符号的单词 这是一段准备好的代码 我都用 尝试过 编码 iso 8859 15 和 编码 utf 8 没有不同 co
  • PayPal 重定向到相同的弹出窗口

    我在我的网页中集成了 PayPal 的 Identity API 像往常一样 当用户点击时login with paypal JavaScript 按钮 https developer paypal com webapps develope
  • 替换 ASP.NET Core 中的 @helper

    到目前为止 我不认为ViewComponent解决了也没有解决的问题TagHelper 有什么替代品吗 接受参数并返回一个的东西HtmlString 我没有看到任何有害的东西 helper foo string something div
  • 在discord.py 中将引号作为参数传递时出现错误

    目前 当有人在命令中使用引号时 我的 Discord 机器人出现错误 我收到以下错误 discord ext commands errors ExpectedClosingQuoteError Expected closing 这似乎是一个
  • oracle sqlplus 包装结果

    当我运行如下查询时 SELECT FROM CAR 结果出现 但每行换行为几行 如何停止这种换行以使每一行显示在一行上 换了之后还是有同样的问题set lines到一个大数字 select from dba directories OWNE
  • 许多WordPress主题中奇怪的虚假social.png的目的是什么

    我从网站下载了一些 WordPress 主题 我注意到一个奇怪的包含social png文件 查看这个文件 这不是一个真正的 png 文件 而是一个 php 脚本 其中包含难以理解的混淆代码 并且对于从其他站点分发的许多 WordPress
  • 用于将大小转换为人类可读字符串的 ObjC/Cocoa 类?

    有没有一种简单的方法可以做类似的事情 NSMagicDataConverter humanStringWithBytes 20000000 哪个会返回 19 1MB 从 OS X 10 8 和 iOS 6 开始 您可以使用NSByteCou
  • 如何将动态XHR内容动态导入到模板中?

    我使用以下代码获取仪表板 HTML 数据 该代码在单击按钮时执行 fetchDashboard const requestOptions Object headers new HttpHeaders append Authorization
  • 通过关键参数保持视图路由器处于活动状态

    如何分别使用不同的参数使 vue router 保持活动状态 TL DR 让我们考虑一个开发 Facebook 等网站的例子 每个用户都有一个个人资料页面 因为有很多用户 我们不想迭代所有用户并在加载时加载所有个人资料页面 如下所示
  • 动态无锁内存分配器

    编写满足无锁进度保证的算法或数据结构的困难之一是动态内存分配 调用类似malloc or new不保证以便携方式无锁 然而 许多无锁实现malloc or new存在 并且还有各种可用于实现无锁算法 数据结构的无锁内存分配器 但是 我仍然不
  • android-检测低电量通知的方法

    有没有办法在 android eclipse 中检测低电量通知 我有一个动作游戏 当它出现时需要暂停 官方开发者网站上有一个关于监控电池电量和充电状态的教程 我希望它对你有帮助 http developer android com trai
  • 为什么当视图聚焦时 RecyclerView 会滚动到视图顶部

    I have RecyclerView 某种聊天 物品有TextViews布局颠倒了 下面的输入字段RecyclerView 当我滚动到底部时RecyclerView然后单击底部项目 它会获得焦点 仅当它获得焦点时 而不是每次单击时 并且R