効果画像:
実装原則:
・チャット情報を表示するために、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()メソッド判定にブール値条件を追加します。
それがすべてです、毎日のプロジェクトで遭遇する小さな知識ポイントは、すべての人を助けることができる希望を記録します。ありがとうございました!