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

滚动项目在回收站视图,所以最后一项始终是相同的软键盘时显示

关浩壤
2023-03-14

我正在开发一个消息应用程序,布局没有什么花哨的-布局顶部的Toolbar,底部的EditText和消息列表的RecyclView,填充中间的空间。

我的问题是,当通过单击/按EditText显示软键盘时,RecyclView中最后一个可见项目的位置不会保持。例如,如果列表有20个项目,并且当软键盘未显示时最后一个可见的是项目12,当软键盘显示时,我仍然希望最后一个可见的是项目12。

我已经在清单和代码中尝试了adjustPan和adjustResize的组合,但没有解决问题。

有什么想法吗?

共有1个答案

葛学民
2023-03-14

我认为你最好的办法是在清单中设置 adjustResize,然后创建一个覆盖 onLayout() 的自定义 RecyclerView 子类:

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {

        super.onLayout(changed, l, t, r, b);

        int height = b - t;
        if (height != mLastHeight) {
            int last = getAdapter.getItemCount() - 1;
            scrollToPosition(last);
        }
        mLastHeight = height;
    }
 类似资料:
  • 我有一个显示位图的水平循环视图。它的实现方式是在它下面有一个Imageview和一个recyclerview。当前选定的项目将显示在图像视图上。为选定的图像视图提供蓝色背景,以指示其已选定。我可以从“多媒体资料”中选择图像,每次选择新图像时,我都希望滚动到最后一个位置并选中该项目。 图像列表保存在数组列表中,每次添加新图像时,我都会将图像添加到列表并notifyDataChanged()。 当前,

  • 我有一个视图寻呼机,在其中一个片段中,我有两个单独的片段,分别包含一个垂直和一个水平的回收视图。 当我将水平循环视图滚动到最后一个项目并尝试进一步滑动时,视图寻呼机滚动到下一页。我不想发生这种事。当我试图覆盖水平循环视图时,我想禁用viewpager的分页。 但是,当我在其他地方滑动时,我不想禁用viewpager的分页功能。例如,如果我在垂直recyclerview或父片段中的任何空白区域上滑动

  • 这是我的应用,问题出在哪里 我希望我的物品能像这个应用一样合身 我正在使用带有的。我的问题是,当其中一个项目具有更长的文本时,您可以在图像中看到网格项的高度不相同。我正在从Firebase加载数据,并在列表具有数据时通知。我尝试了一切,但找不到一个解决方案来自动适应项目,如第二张图片所附。有什么帮助吗? 这是我的recyclerview项目布局

  • 我有一个回收站视图,在右下顶部有一个FAB。 当滚动时,我希望允许用户进一步向上滚动,以使最后一项完全可见,并且不被FAB覆盖。允许在底部额外显示48像素的背景即可。 我尝试添加一个透明的页脚项目,这可以解决问题。但是,在向列表中添加排序后,透明页脚项在排序过程中会产生一些 UI 故障(分隔线显示在正常项的下方)。 我试着添加了一个边距,但是空间总是被浪费掉了。当用户在顶部查看第一个项目时,FAB

  • 我有一个endless Recycler视图,其中包含使用JSoup从一个在线论坛线程中提取的数据。recyclerview将不断填充自己,直到用户到达最后一页。我想膨胀一个“端视图”,一旦用户到达最后一页,滚动到最后一个可见的项目,但我无法检索它。 我尝试使用getItemCount()和findLastVisibleItemPotion()从回收器视图linearlayoutManager。它

  • 我一直在尝试按照以下教程将选项菜单集成到我的listview中: [https://www.simplifiedcoding.net/create-options-menu-recyclerview-item-tutorial/] 我已经能够让菜单的图标出现在列表视图中的项目旁边,但是我无法点击它来访问弹出菜单。我试图在我的BindViewHolder(MyViewHolder持有者,int位置)