Android:回收站视图没有滚动到最后一个位置

Posted

技术标签:

【中文标题】Android:回收站视图没有滚动到最后一个位置【英文标题】:Android: Recycler view is not scrolling to last position 【发布时间】:2019-05-26 00:23:56 【问题描述】:

我正在尝试使用 Recycler 视图创建聊天屏幕。由于用户进入屏幕时的聊天功能,列表应该滚动到最后一个位置。

我的问题是当键盘打开时列表被隐藏。 如果我们使用调整平移,整个视图将向上,我试图只滚动列表,我希望在键盘打开时标题栏保持相同的位置

【问题讨论】:

你试过用调整大小来代替吗?? 请粘贴您的xml 代码。 【参考方案1】:

将此添加到您的代码中并检查....它对我来说很好....

mRecyclerView.addOnLayoutChangeListener(new View.OnLayoutChangeListener()

    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) 
    
        if (mRecyclerAdapter != null) 
        
            if (bottom < oldBottom) 
            
                mRecyclerView.smoothScrollToPosition(mRecyclerAdapter.getItemCount() - 1);
            
        
    
);

当你收到新消息时添加这一行......

mRecyclerView.smoothScrollToPosition(mRecyclerAdapter.getItemCount() - 1);

【讨论】:

它可以工作,但是当我发送消息时,列表滚动到下面的 3 行【参考方案2】:

无需在清单中添加 android:windowSoftInputMode。只需将您的回收站视图保持在底部视图上方即可。希望这会有所帮助。`

            <RelativeLayout
                android:layout_
                android:layout_>
            </RelativeLayout>
             <RelativeLayout
                android:id="@+id/rlBottom"
                android:layout_
                android:layout_
                android:layout_gravity="bottom"
                android:layout_margin="@dimen/dimen_8"
                android:background="@drawable/shape_write_msg"
                android:elevation="@dimen/dimen_2">

                <EditText
                    android:id="@+id/etMessage"
                    android:layout_
                    android:layout_
                    android:layout_centerVertical="true"
                    android:layout_marginEnd="@dimen/dimen_12"
                    android:layout_marginStart="@dimen/dimen_12"
                    android:layout_toEndOf="@+id/ivAdd"
                    android:layout_toStartOf="@+id/ivSend"
                    android:background="@color/white"
                    android:focusable="true"
                    android:hint="@string/label_type_here"
                    android:inputType="textCapSentences"
                    android:textColor="@color/black"
                    android:textCursorDrawable="@null"
                    android:textSize="@dimen/sp_12"
                    android:visibility="visible" />


                <ImageView
                    android:id="@+id/ivSend"
                    android:layout_
                    android:layout_
                    android:layout_alignParentEnd="true"
                    android:layout_centerVertical="true"
                    android:layout_marginEnd="@dimen/dimen_4"
                    android:padding="@dimen/dimen_8"
                    android:src="@drawable/drawable_send"
                    android:visibility="visible" />
            </RelativeLayout>
        </android.support.v7.widget.CardView>
    </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

`

【讨论】:

以上是关于Android:回收站视图没有滚动到最后一个位置的主要内容,如果未能解决你的问题,请参考以下文章

回收站视图滚动到特定位置

如何将按钮放在回收站视图的顶部?

每次重新创建滚动位置后,如何将滚动位置保存在回收站视图中?

当我在 Android 中将文件上传到 Firebase 存储时,进度条没有更新

回收站视图位置

在 Android 回收站视图中重新排序项目后,位置未更新