约束布局的 match_constraints 无法正常工作
Constraint Layout's match_constraints is not working properly
我有一个双重约束布局,一个是占据所有屏幕的框,第二个包含一些视图(特别是 editTextview)。我希望我的 editText 占据右边所有剩余的 space,如下图
我设置了 layout_width = 0dp 来达到这个目的,但它不起作用。事实上,editText 似乎要短得多;我仍然可以写数字,但它们都保留在 space 的那部分(它显示了 editText 的那部分中的最后 6 个数字)。
此外,当我停止打字并且键盘消失时,我之前写的所有数字都会在右侧展开,如您所见:
我尝试使用 layout_width = 500dp 或类似的方法来解决问题,但最终结果并不是我想要达到的效果。我希望能够为所有行写数字,当我到达它时,第一个数字必须从视图中消失,新写的数字必须出现在右边(我的意思是,它必须显示最后 30 个字符例如)。
这里是有问题的布局部分:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/boxEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@drawable/layout_border"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tabLayout">
<TextView
android:id="@+id/buttonPrefix"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:text="+39"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/boxEditText"
app:layout_constraintTop_toTopOf="parent"></TextView>
<View
android:id="@+id/verticalLine"
android:layout_width="1dp"
android:layout_height="25dp"
android:layout_margin="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@android:color/black"
app:layout_constraintBottom_toBottomOf="@+id/buttonPrefix"
app:layout_constraintStart_toEndOf="@+id/buttonPrefix"
app:layout_constraintTop_toTopOf="@+id/buttonPrefix" />
<EditText
android:id="@+id/editTextPhone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/edit_text_border"
android:hint="@string/Telefono"
android:inputType="phone"
android:maxLines="1"
app:layout_constraintBottom_toBottomOf="@+id/verticalLine"
app:layout_constraintStart_toEndOf="@+id/verticalLine"
app:layout_constraintTop_toTopOf="@+id/verticalLine" />
</androidx.constraintlayout.widget.ConstraintLayout>
如果我理解的不错,你可以写
android:gravity="right"
这样,您将从右侧开始打字,随着您不断打字,第一个数字将移至左侧。现在,如果您想要显示特定数量的字符,您可以通过更改数字的大小来实现。
我不确定哪些图片显示了工作示例,哪些显示了不工作示例,但我注意到了这一点:
您忘记了结束约束:
app:layout_constraintEnd_toEndOf="parent"
如果文本与您的背景重叠,您可以添加一些填充:
android:paddingEnd="16dp"
我有一个双重约束布局,一个是占据所有屏幕的框,第二个包含一些视图(特别是 editTextview)。我希望我的 editText 占据右边所有剩余的 space,如下图
我设置了 layout_width = 0dp 来达到这个目的,但它不起作用。事实上,editText 似乎要短得多;我仍然可以写数字,但它们都保留在 space 的那部分(它显示了 editText 的那部分中的最后 6 个数字)。
此外,当我停止打字并且键盘消失时,我之前写的所有数字都会在右侧展开,如您所见:
我尝试使用 layout_width = 500dp 或类似的方法来解决问题,但最终结果并不是我想要达到的效果。我希望能够为所有行写数字,当我到达它时,第一个数字必须从视图中消失,新写的数字必须出现在右边(我的意思是,它必须显示最后 30 个字符例如)。
这里是有问题的布局部分:
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/boxEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:background="@drawable/layout_border"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tabLayout">
<TextView
android:id="@+id/buttonPrefix"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:text="+39"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/boxEditText"
app:layout_constraintTop_toTopOf="parent"></TextView>
<View
android:id="@+id/verticalLine"
android:layout_width="1dp"
android:layout_height="25dp"
android:layout_margin="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@android:color/black"
app:layout_constraintBottom_toBottomOf="@+id/buttonPrefix"
app:layout_constraintStart_toEndOf="@+id/buttonPrefix"
app:layout_constraintTop_toTopOf="@+id/buttonPrefix" />
<EditText
android:id="@+id/editTextPhone"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/edit_text_border"
android:hint="@string/Telefono"
android:inputType="phone"
android:maxLines="1"
app:layout_constraintBottom_toBottomOf="@+id/verticalLine"
app:layout_constraintStart_toEndOf="@+id/verticalLine"
app:layout_constraintTop_toTopOf="@+id/verticalLine" />
</androidx.constraintlayout.widget.ConstraintLayout>
如果我理解的不错,你可以写
android:gravity="right"
这样,您将从右侧开始打字,随着您不断打字,第一个数字将移至左侧。现在,如果您想要显示特定数量的字符,您可以通过更改数字的大小来实现。
我不确定哪些图片显示了工作示例,哪些显示了不工作示例,但我注意到了这一点:
您忘记了结束约束:
app:layout_constraintEnd_toEndOf="parent"
如果文本与您的背景重叠,您可以添加一些填充:
android:paddingEnd="16dp"