提问人:Al Sh 提问时间:10/17/2023 更新时间:10/18/2023 访问量:22
高度wrap_content不恢复大小的多行 TextInputEditText
Multiline TextInputEditText with height wrap_content not restoring size
问:
如果在 xml 中具有以下布局。这是更大布局的一部分
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layoutInputNewText"
android:layout_width="match_parent"
android:layout_height="0dp"
android:minHeight="52dp"
android:layout_marginTop="5dp"
android:background="@color/white"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/inputMessage"
style="@style/TextInputLayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_marginEnd="4dp"
android:hint="@string/write_a_message"
android:labelFor="@id/editMessage"
android:textColorHint="@color/chip_text"
app:layout_constraintEnd_toStartOf="@id/buttonSend"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:startIconTint="@color/default_green">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editMessage"
android:layout_width="match_parent"
android:maxHeight="150dp"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:inputType="textMultiLine"
android:maxLines="3"
android:paddingStart="20dp"
android:paddingTop="15dp"
android:paddingEnd="10dp"
android:paddingBottom="15dp"
android:textColor="@color/accent_color_light"
android:textColorHint="@color/secondary_text_color"
android:textSize="16sp"
tools:ignore="Autofill,TextFields" />
</com.google.android.material.textfield.TextInputLayout>
TextInputLayout 的样式如下:
<style name="TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
<item name="boxBackgroundColor">@android:color/transparent</item>
<item name="background">@android:color/transparent</item>
<item name="backgroundTint">@android:color/transparent</item>
<item name="boxStrokeWidth">0dp</item>
<item name="android:layout_marginStart">@dimen/main_side_margin</item>
<item name="android:layout_marginEnd">@dimen/main_side_margin</item>
<item name="android:layout_marginTop">@dimen/label_to_field_margin</item>
<item name="colorAccent">@android:color/white</item>
<item name="errorTextAppearance">@style/ErrorText</item>
<item name="errorIconDrawable">@null</item>
<item name="boxStrokeWidthFocused">0dp</item>
<item name="colorControlNormal">@android:color/transparent</item>
<item name="colorControlActivated">@android:color/transparent</item>
<item name="colorControlHighlight">@android:color/transparent</item>
<item name="android:theme">@style/ThemeOverlay.AppTheme.TextInputEditText.Outlined</item>
</style>
<style name="ThemeOverlay.AppTheme.TextInputEditText.Outlined" parent="">
<item name="colorControlActivated">@color/accent_color_light</item>
</style>
我在代码中设置文本如下:editMessage.setText(message.message) 如果文本很长,我有一个预期的多行 TextInputEditText 完成编辑并单击按钮后,我执行以下操作:
fun enableNextMessage(errorMsg: String?) {
with(binding) {
buttonSend.isEnabled = true
if (errorMsg == null) {
layoutReply.isVisible = false
inputMessage.startIconDrawable = null
editText.text = null
} else showWarning(false, errorMsg)
}
}
问题在于 editText 大小保持不变,就好像它是多行的并且具有最大线一样。
我尝试通过以下方式设置editMessageheight:
editMessage.layoutParams.height = FrameLayout.LayoutParams.WRAP_CONTENT
这无济于事
执行以下操作会有所帮助:
binding.editMessage.layoutParams.height = resources.getDimensionPixelSize(R.dimen.default_input_size)
但当然,在那之后,editMessage 不再是多行的,也不会改变它的大小。 我尝试设置固定高度,然后WRAP_CONTENT。它不起作用。一旦我设置WRAP_CONTENT它就会恢复到更大的尺寸。
答:
0赞
Al Sh
10/18/2023
#1
有帮助的是摆脱 TextInputLayout 并只留下 TextInputEditText
评论