如何使 EditText 在 Constraintlayout 中正确换行
How to make an EditText wrap correctly in a Constraintlayout
大家好,我有一个问题困扰了我 2 天。这似乎是一个如此简单的问题,但我似乎无法解决它。基本上我正在制作一个莫尔斯电码翻译应用程序
当用户在 EditText 字段中键入时,它会立即将键入的文本翻译成下面的莫尔斯码。
问题:
我想要的是 EditTexts 扩展以占用所需的 space ,但一旦达到一定高度就包装一个变得可滚动。问题实际上是我尝试过的所有方法都导致其中一个 EditText 将另一个推离屏幕或根本不包裹其文本。
到目前为止我得到了什么:
我的布局完全符合我的要求,并且按我想要的方式工作。它看起来不像我想要的那样。我正在使用导航组件,因此下面的视图在 MainActivty 的 FragmentContainerView 中被放大。我还设置了 window 行为 android:windowSoftInputMode="adjustResize"
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/decoder_text_to_morse_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue"
tools:context=".Fragments.DecoderFragment"
>
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/four_dp"
android:gravity="top"
android:id="@+id/include1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="@dimen/sixteen_dp"
android:background="@drawable/card_background"
app:layout_constraintBottom_toTopOf="@+id/decode_changer_fab"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/header_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sixteen_dp"
android:layout_marginEnd="@dimen/sixteen_dp"
android:text="Text"
app:layout_constraintBottom_toBottomOf="@id/decode_changer_fab"
app:layout_constraintEnd_toStartOf="@+id/decode_changer_fab"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/decode_changer_fab" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/decode_changer_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/eight_dp"
android:src="@drawable/ic_arrow"
app:layout_constraintBottom_toTopOf="@+id/include2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/include1" />
<TextView
android:id="@+id/header_morse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sixteen_dp"
android:layout_marginEnd="@dimen/sixteen_dp"
android:text="Morse"
app:layout_constraintBottom_toBottomOf="@id/decode_changer_fab"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/decode_changer_fab"
app:layout_constraintTop_toTopOf="@id/decode_changer_fab" />
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/four_dp"
android:gravity="top"
android:id="@+id/include2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="@dimen/sixteen_dp"
android:background="@drawable/card_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/decode_changer_fab" />
</androidx.constraintlayout.widget.ConstraintLayout>
我想要的只是让 EditText 以折叠状态开始,展开以容纳其内容并在键盘打开时调整大小。使用 app:layout_constraintHeight_default="wrap"
不起作用并导致底部的 EditText 将顶部的 EditText 推离屏幕。我意识到 app:layout_constraintHeight_default="wrap"
已被弃用,推荐的方法是 app:layout_constrainedHeight="true"
和 android:layout_height="wrap_content"
但行为与底部的 EditText 将顶部的推离屏幕相同。任何帮助将不胜感激。真的为了一件平凡的事而苦苦挣扎-_-
你试过把:
android:inputType="文本多行"
在你的 EditText 标签里面?
喜欢 :
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
对我来说,当我需要这个时,使用最大和最小高度是有效的,在最大高度之后,编辑文本将变得可滚动
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight= //desired dimensions
android:minHeight = //desired dimensions
/>
大家好,我有一个问题困扰了我 2 天。这似乎是一个如此简单的问题,但我似乎无法解决它。基本上我正在制作一个莫尔斯电码翻译应用程序 当用户在 EditText 字段中键入时,它会立即将键入的文本翻译成下面的莫尔斯码。
问题: 我想要的是 EditTexts 扩展以占用所需的 space ,但一旦达到一定高度就包装一个变得可滚动。问题实际上是我尝试过的所有方法都导致其中一个 EditText 将另一个推离屏幕或根本不包裹其文本。
到目前为止我得到了什么:
我的布局完全符合我的要求,并且按我想要的方式工作。它看起来不像我想要的那样。我正在使用导航组件,因此下面的视图在 MainActivty 的 FragmentContainerView 中被放大。我还设置了 window 行为 android:windowSoftInputMode="adjustResize"
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/decoder_text_to_morse_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/blue"
tools:context=".Fragments.DecoderFragment"
>
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/four_dp"
android:gravity="top"
android:id="@+id/include1"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="@dimen/sixteen_dp"
android:background="@drawable/card_background"
app:layout_constraintBottom_toTopOf="@+id/decode_changer_fab"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/header_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sixteen_dp"
android:layout_marginEnd="@dimen/sixteen_dp"
android:text="Text"
app:layout_constraintBottom_toBottomOf="@id/decode_changer_fab"
app:layout_constraintEnd_toStartOf="@+id/decode_changer_fab"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/decode_changer_fab" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/decode_changer_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/eight_dp"
android:src="@drawable/ic_arrow"
app:layout_constraintBottom_toTopOf="@+id/include2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/include1" />
<TextView
android:id="@+id/header_morse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/sixteen_dp"
android:layout_marginEnd="@dimen/sixteen_dp"
android:text="Morse"
app:layout_constraintBottom_toBottomOf="@id/decode_changer_fab"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/decode_changer_fab"
app:layout_constraintTop_toTopOf="@id/decode_changer_fab" />
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/four_dp"
android:gravity="top"
android:id="@+id/include2"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="@dimen/sixteen_dp"
android:background="@drawable/card_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/decode_changer_fab" />
</androidx.constraintlayout.widget.ConstraintLayout>
我想要的只是让 EditText 以折叠状态开始,展开以容纳其内容并在键盘打开时调整大小。使用 app:layout_constraintHeight_default="wrap"
不起作用并导致底部的 EditText 将顶部的 EditText 推离屏幕。我意识到 app:layout_constraintHeight_default="wrap"
已被弃用,推荐的方法是 app:layout_constrainedHeight="true"
和 android:layout_height="wrap_content"
但行为与底部的 EditText 将顶部的推离屏幕相同。任何帮助将不胜感激。真的为了一件平凡的事而苦苦挣扎-_-
你试过把: android:inputType="文本多行" 在你的 EditText 标签里面? 喜欢 :
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
对我来说,当我需要这个时,使用最大和最小高度是有效的,在最大高度之后,编辑文本将变得可滚动
<androidx.appcompat.widget.AppCompatEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxHeight= //desired dimensions
android:minHeight = //desired dimensions
/>