You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android实现EditText满6行后可滚动的类WhatsApp聊天输入框效果

实现WhatsApp风格自动扩展输入框方案

核心修改逻辑

  • 外层输入框容器不能写死高度,需改为自适应高度,同时保留最小高度保证默认样式
  • EditText限制最大行数为6,超过后自动开启滚动效果
  • 配置多行输入参数和滚动方法,保证交互正常

修改后完整XML代码

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/downLayout"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:minHeight="@dimen/_40sdp"
    android:layout_marginStart="@dimen/_20sdp"
    android:layout_marginEnd="@dimen/_20sdp"
    android:layout_marginBottom="@dimen/_10sdp"
    android:background="@drawable/layout_background"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent">

    <EditText
        android:id="@+id/etTypeMessage"
        style="@style/noteText.Black"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/_16sdp"
        android:background="@null"
        android:hint="Type a message"
        android:scrollbars="vertical"
        android:textColorHint="@color/black"
        android:textColorHighlight="@color/duck_egg_blue"
        android:maxLines="6"
        android:inputType="textMultiLine|textCapSentences|textNoSuggestions"
        android:isScrollContainer="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/ivAttachments"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <ImageView
        android:id="@+id/ivSend"
        android:layout_width="22dp"
        android:layout_height="22dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="16dp"
        android:src="@drawable/ic_send"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageView
        android:id="@+id/ivAttachments"
        android:layout_width="22dp"
        android:layout_height="22dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginBottom="16dp"
        android:src="@drawable/ic_attachment"
        app:layout_constraintBottom_toBottomOf="@+id/ivSend"
        app:layout_constraintEnd_toStartOf="@+id/ivSend"
        app:layout_constraintTop_toTopOf="@+id/ivSend" />

</androidx.constraintlayout.widget.ConstraintLayout>

代码补充配置

在页面初始化时给EditText添加滚动方法,保证超出行数后滑动流畅:

Kotlin 代码

etTypeMessage.movementMethod = ScrollingMovementMethod.getInstance()

Java 代码

etTypeMessage.setMovementMethod(ScrollingMovementMethod.getInstance());

修改完成后即可实现效果:输入内容在1-6行区间时输入框高度随内容自动扩展,超过6行后输入框高度固定,内容可垂直滚动。

内容的提问来源于stack exchange,提问作者dennisrufigill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:15:01