我正在创建一个对话框,并将两个按钮与父ConstraintLayout右对齐。
一切都很好,直到按钮文本变得非常长。当任一或两个按钮的文本很长时,按钮会延伸超出父级边界,导致文本被裁剪,如下图所示。我想处理文本较长的情况。
即:
- 当文本很长时,按钮应换行。 - 按钮应保持在父级范围内并遵守父级填充。 - 按钮应保持右对齐于父级。 当按钮文本很短时,布局按预期工作: 当按钮文本很长时: 布局代码:
一切都很好,直到按钮文本变得非常长。当任一或两个按钮的文本很长时,按钮会延伸超出父级边界,导致文本被裁剪,如下图所示。我想处理文本较长的情况。
即:
- 当文本很长时,按钮应换行。 - 按钮应保持在父级范围内并遵守父级填充。 - 按钮应保持右对齐于父级。 当按钮文本很短时,布局按预期工作: 当按钮文本很长时: 布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/dialog_padding"
android:paddingLeft="@dimen/dialog_padding"
android:paddingRight="@dimen/dialog_padding"
android:paddingTop="@dimen/dialog_padding">
<TextView
android:id="@+id/dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dialog_text_margin"
tools:text="Dialog title" />
<TextView
android:id="@+id/dialog_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dialog_text_margin"
app:layout_constraintTop_toBottomOf="@id/dialog_title"
tools:text="Dialog text content" />
<Button
android:id="@+id/cancel_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@id/ok_btn"
app:layout_constraintTop_toBottomOf="@id/dialog_content"
tools:text="Dismiss" />
<Button
android:id="@+id/ok_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/dialog_content"
tools:text="Accept" />
</android.support.constraint.ConstraintLayout>
我尝试过但无效的方法:
- 将
app:layout_constraintStart_toStartOf="parent"
添加到取消按钮会导致按钮不再右对齐,因此该解决方案是不正确的 - 将忽略按钮的结束约束到接受按钮的开始会导致按钮不再右对齐
- 使用
layout_width="0dp"
为按钮设置宽度,并使用app:layout_constrainedWidth="true"
没有效果
app:layout_constraintHorizontal_bias="1.0"
? - rjr-appsapp:layout_constraintStart_toStartOf="parent"
的答案是不正确的,因为它会使按钮不再向右对齐。 - VIN