キーボードメッセージがチャットページにポップアップし、最後のメッセージまでスクロールします

効果画像:

チャットメッセージ

実装原則:

チャット情報を表示するために、addOnLayoutChangeListener()リスナーをRecyclerViewのルートレイアウトに追加します

コード:

1. xmlファイルの情報表示レイアウトは次のとおりです(コードはページレイアウトの情報表示部分のみです)

<FrameLayout
        android:id="@+id/fl_chat"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toTopOf="@+id/ll_input"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv_chat"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </FrameLayout>

2.Javaコードでの設定の監視

//这里flChat为聊天信息展示RecyclerView所在的根布局
        FrameLayout flChat = (FrameLayout) findViewById(R.id.fl_chat);
        flChat.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 (bottom < oldBottom) {

                    //通过RecyclerView的滚动方法将聊天信息滚动到最后一条
                    rvChat.scrollToPosition(adapterChat.getModels().size() - 1);
                }
            }
        });

3.入力ボックスをクリックしてコンテンツを入力し、QQチャットが中央に反転したときに下にスクロールしない場合は、addOnScrollListener()をRecyclerViewに追加して、ユーザーがアクティブにスクロールして中央の情報部分を表示していることを確認し、ブール値を追加して決定します。上部(2)onLayoutChange()メソッド判定にブール値条件を追加します。


それがすべてです、毎日のプロジェクトで遭遇する小さな知識ポイントは、すべての人を助けることができる希望を記録します。ありがとうございました!

おすすめ

転載: blog.csdn.net/nsacer/article/details/77758230