更新新项目时如何自动向下滚动ListView控件-Android Studio

时间:2019-07-17 06:31:41

标签: java android android-listview

我的聊天页面具有列表视图。...在列表视图中键入新消息时,它不会自动在botton处向下滚动。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:padding="15sp"
    android:background="@drawable/chat_page"
    tools:context=".Chatbox">


    <Button
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:clickable="true"
        android:id="@+id/sendbutton"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:background="@drawable/send"
         />

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/sendbutton"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true">

        <EditText
            android:id="@+id/typemessage"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:hint="Type a message..." />
    </android.support.design.widget.TextInputLayout>


    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_above="@id/sendbutton"
        android:dividerHeight="5dp"
        android:padding="10dp"
        android:divider="@android:color/transparent"
        android:id="@+id/listmessages"
        android:layout_marginBottom="16dp"/>


</RelativeLayout>

当我在列表视图中添加新文本时,它应该转到页面底部以查看新消息

1 个答案:

答案 0 :(得分:1)

您可以尝试一下。但是我建议您使用Chatcycl模块的recyclerview而不是listview。

private void scrollToBottom() {
listView.post(new Runnable() {
    @Override
    public void run() {
        listView.setSelection(adapter.getCount() - 1);
    }
 });
}