Я создаю диалог с двумя кнопками, выровненными по правому краю относительно родительского ConstraintLayout.
Все нормально, пока текст кнопок не станет очень длинным. Если текст одной или обеих кнопок длинный, кнопки выходят за пределы родительского элемента, что приводит к обрезке текста, как показано на изображении ниже. Я хотел бы обрабатывать случаи, когда есть более длинный текст.
т.е. желаемое поведение будет
- кнопки должны переносить текст, когда текст длинный
- кнопки должны оставаться в границах родительского элемента и подчиняться родительскому заполнению
- кнопки должны оставаться выровненными справа от родителя
Если текст кнопки короткий, макет работает правильно:
Если текст кнопки длинный:
- Текст отмены обрезается, если текст кнопки отмены длинный. Это происходит потому, что сама кнопка перемещается за пределы родительской границы.
- Отменить текст, выдвинутый за пределы родительских границ, когда текст кнопки ok длинный, опять же, потому что кнопка выталкивается за пределы родительских границ.
Код макета
<?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>
Things that I've tried to no avail:
- добавление
app:layout_constraintStart_toStartOf="parent"
к кнопке отмены приводит к тому, что кнопки больше не выровнены по правому краю, и это решение неверно - ограничение конца кнопки отклонения до начала кнопки принятия приводит к тому, что кнопки больше не выравниваются по правому краю
- использование
layout_width="0dp"
для кнопок и использованиеapp:layout_constrainedWidth="true"
не имеет никакого эффекта
app:layout_constraintHorizontal_bias="1.0"
в представлениях кнопок? - person rjr-apps   schedule 11.04.2018app:layout_constraintStart_toStartOf="parent"
к кнопке отмены неверен, потому что из-за этого кнопки больше не выравниваются по правому краю. - person VIN   schedule 11.04.2018