繁体   English   中英

聚焦/滚动回收站查看最后一个项目

[英]Focus/Scroll recyclerView to last Item

我的应用具有RecycleView构成的主要聊天风格活动,该活动由列表填充。 用户插入新项目(文本输入,照片/视频捕获)后,回收站应滚动/聚焦到列表的最后一项,但是即使使用了recyclerView.scrollToPosition(CustomList.size ()-1)。

完整的代码可在以下网址获得: https : //github.com/MikeSys/ChatApp


主要活动

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

    // Elementi Grafici-----------------------------------------

    RecyclerView recyclerView = findViewById(R.id.recyclerView);
    Button video = findViewById(R.id.video);
    Button camera = findViewById(R.id.camera);
    Button send = findViewById(R.id.send);
    videoView =findViewById(R.id.rec);
    final EditText editText = findViewById(R.id.editText);

    // Media Controller----------------------------------------



    // Layout Manager------------------------------------------------

    linearLayoutManager = new LinearLayoutManager(MainActivity.this);
    linearLayoutManager.setStackFromEnd(true);
    recyclerView.setLayoutManager(linearLayoutManager);


    // Adapter-----------------------------------------

    if(dati.size()> 1){  
        adapter =  new myAdapter(dati, this);
        adapter.notifyDataSetChanged();
        adapter.notifyItemInserted(dati.size()-1);
        recyclerView.setAdapter(adapter);
        //Setted recyclerView to scroll to the last item of the List
        recyclerView.scrollToPosition(dati.size()-1);
    }


    else{
        adapter =  new myAdapter(dati,this);
        recyclerView.setAdapter(adapter);
    }

MainActivity布局

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">


<android.support.v7.widget.RecyclerView
    android:background="@drawable/sfondo"
    android:foregroundGravity="center"
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintBottom_toTopOf="@+id/editText"
    app:layout_constraintTop_toTopOf="parent"
    tools:layout_editor_absoluteX="0dp"
    app:stackFromEnd="true"/>


<EditText
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_marginEnd="160dp"
    android:background="#0003A9F4"
    android:hint="Scrivi"
    android:padding="20dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_weight="3"
    app:layout_constraintStart_toStartOf="parent" />


<Button
    android:id="@+id/send"
    android:layout_width="55dp"
    android:layout_height="64dp"
    android:background="@drawable/send"
    app:layout_constraintBottom_toBottomOf="@+id/editText"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toEndOf="@+id/editText"
    app:layout_constraintTop_toTopOf="@+id/editText"
    app:layout_constraintVertical_bias="0.0"/>

<Button
    android:id="@+id/camera"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginBottom="16dp"
    android:background="@drawable/camera"
    app:layout_constraintBottom_toBottomOf="@+id/editText"
    app:layout_constraintEnd_toStartOf="@+id/send"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="@+id/editText"
    app:layout_constraintTop_toTopOf="@+id/editText"
    app:layout_constraintVertical_bias="0.0" />

<Button
    android:id="@+id/video"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="8dp"
    android:background="@drawable/video"
    app:layout_constraintEnd_toStartOf="@+id/camera"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="@+id/editText"
    app:layout_constraintTop_toBottomOf="@+id/recyclerView" />


截图

在此处输入图片说明

采用

recyclerView.smoothScrollToPosition(位置);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM