将recyclerview焦点转移到列表中的最后一个元素

时间:2015-12-16 08:23:42

标签: android android-layout android-recyclerview

我正在使用recyclerview在聊天窗口中显示消息。但是,在编辑新消息时,回收器视图焦点应位于最后一个元素上。我希望有一些方法可以将recyclerview的焦点转移到最后一个元素而不是第一个元素。

8 个答案:

答案 0 :(得分:30)

使用recyclerView.smoothScrollToPosition(position);

位置 是您插入的最后一项的索引。这会将RecyclerView焦点移到最后一个元素上。

答案 1 :(得分:8)

使用可以在LinearLayoutManager对象上添加任意两行,将Recyclerview滚动到底部......

llm.setStackFromEnd(true);

OR

llm.setReverseLayout(true);

答案 2 :(得分:6)

使用

recyclerView.smoothScrollToPosition(position)
adapter.notifyDataSetChanged();

其中position是最后一个元素的索引

recyclerView.getAdapter().getItemCount()-1

使用它来获取最后一个元素。

这对我有用。

答案 3 :(得分:1)

确定此位置是您要查看的项目的位置。

recyclerView.smoothScrollToPosition(position);

答案 4 :(得分:1)

您可以通过两种方式进行操作。

1:为RecyclerView创建任何LayoutManager时,将其构造函数中的最后一个参数设为true

LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,true);

2:只需告诉RecyclerView滚动到最后一个位置即可。

recyclerView.smoothScrollToPosition(lastPosition);

答案 5 :(得分:1)

使用layoutManager.setStackFromEnd(true);代替。

样品

    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    RecyclerView recyclerView = findViewById(R.id.list);
    layoutManager.setStackFromEnd(true);
    recyclerView.setLayoutManager(layoutManager);

答案 6 :(得分:0)

您可以在回收者视图XML代码中使用 app:stackFromEnd =“ true”

 <android.support.v7.widget.RecyclerView
  android:id="@+id/message_list"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_above="@id/message_input"
  android:layout_alignParentTop="true"
  app:stackFromEnd="true" />

答案 7 :(得分:0)

您可以简单地使用以下代码。在这里 recyclerView.getBottom()定义要聚焦的位置

recyclerView.smoothScrollToPosition(recyclerView.getBottom());