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
相关产品推荐
相关产品推荐

