【发布时间】:2018-04-12 07:44:42
【问题描述】:
我正在创建一个对话框,其中两个按钮相对于父 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"? -
@nope4561759 我将它们水平链接起来,并将偏差设置为 1.0,如您所说,但偏差没有任何效果。更改后按钮实际上更左对齐。
-
只是想添加这个以记录将
app:layout_constraintStart_toStartOf="parent"添加到取消按钮的答案不正确,因为它会导致按钮不再正确对齐。
标签: android android-layout android-constraintlayout constraint-layout-chains