Я пытаюсь создать макет с тремя группами виджетов. Я хочу, чтобы одна группа была ограничена сверху, одна снизу, а другая плавала в середине пространства между двумя группами. Раскладка будет использоваться во фрагменте, чтобы он мог сдавиться, особенно когда отображается клавиатура. У меня возникают проблемы с выяснением того, как предотвратить перекрытие двух групп, при этом удерживая верх и низ ограниченным верхом и низом макета.
Я думал о нескольких способах сделать это, но я не могt выяснить, как правильно реализовать любое из них.
- Использование
app:layout_constraintVertical_bias
или app:layout_constraintVertical_weight
для объединения виджетов или их разнесения. - Использование одной цепочки, но с разрывамимежду группами. Я не мог понять, как разделить цепочку на части, чтобы позволить разным группам распределиться.
- Укажите минимальную высоту, которая зависит от содержащихся виджетов. (Он будет содержаться в
ScrollView
, поэтому, если высота ограничена, он будет работать) - Создание групп упакованных цепочек, в которых упакованные цепочки находятся в цепочке распространения.
Или есть лучший способ получить то, что я хочу?
Примечание: Я бы предпочел, чтобы верхняя и нижняя группы не соответствовали родительскому макету, но я не могНе могу понять, как заставить эти группы динамически дистанцироваться от родительского макета, не раздвигая группу. Я хочу, чтобы верхняя и нижняя группы были близки к родительскому макету, но не обязательно прямо против него. Лучше иметь их прямо против родительского макета, чем близко к середине. В идеале я мог бы использовать для этого app:layout_constraintVertical_bias
или app:layout_constraintVertical_weight
.
Код
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<EditText
android:id="@+id/edit_text_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/edit_text_horizontal_margin"
android:layout_marginRight="@dimen/edit_text_horizontal_margin"
android:layout_marginTop="@dimen/edit_text_vertical_margin"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/edit_text_2"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:hint="Edit Text 1"
android:selectAllOnFocus="true" />
<EditText
android:id="@+id/edit_text_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/edit_text_horizontal_margin"
android:layout_marginRight="@dimen/edit_text_horizontal_margin"
android:layout_marginTop="@dimen/edit_text_vertical_margin"
android:layout_marginBottom="@dimen/edit_text_vertical_margin"
app:layout_constraintTop_toBottomOf="@id/edit_text_1"
app:layout_constraintBottom_toTopOf="@id/button"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:hint="Edit Text 2"
android:selectAllOnFocus="true" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/edit_text_2"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:enabled="false"
android:text="Button" />
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/progress_bar_margin"
app:layout_constraintTop_toBottomOf="@id/button"
app:layout_constraintBottom_toTopOf="@id/clickable_text_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:visibility="gone" />
<TextView
android:id="@+id/clickable_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/text_button_horizontal_margin"
android:layout_marginRight="@dimen/text_button_horizontal_margin"
android:layout_marginTop="@dimen/text_button_vertical_margin"
android:layout_marginBottom="@dimen/text_button_vertical_margin"
android:paddingLeft="@dimen/text_button_horizontal_margin"
android:paddingRight="@dimen/text_button_horizontal_margin"
android:paddingTop="@dimen/text_button_vertical_margin"
android:paddingBottom="@dimen/text_button_vertical_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:text="Clickable Text View"
android:clickable="true"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Изображения
- - - - ![Overlap Problem](https://i.stack.imgur.com/Lt7D6.png)
Вот что у меня есть, и как я хочу, чтобы это выглядело. - - - - - Вот проблема перекрытия.