У меня проблема с размером детей в ConstraintLayout
. У меня есть 3 просмотра:
TextView
(item_quantity
): я хочу, чтобы это росло бесконечно, но не pu sh the TextInputLayout
с экрана TextInputLayout
(data_entry_layout
): я хочу, чтобы это заполнило все доступное горизонтальное пространство и имело минимальную ширину 120dp
независимо от того, что ImageView
(camera_scan
): это не будет расти, просто не должен отталкиваться от экрана
Если item_quantity
имеет короткий текст, я хочу, чтобы он выглядел как на рисунке ниже. Я хочу, чтобы data_entry_layout
заполнил все доступное пространство.
Если item_quantity
имеет длинный текст, я хочу, чтобы он заполнялся и увеличивался, но я хочу data_entry_layout
никогда не будет меньше 120dp
. Я хочу, чтобы почтить minWidth
. Итак, я хочу, чтобы это выглядело так:
Вот моя текущая конфигурация:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<TextView
android:id="@+id/item_quantity"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constrainedWidth="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/data_entry_layout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_chainStyle="spread_inside"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:text="90,000 Boxes of Stuff Are Needed"
android:textColor="@color/color_on_background"
android:textSize="@dimen/workflow_item_view_item_quantity_text_size" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/data_entry_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/camera_scan"
app:layout_constraintStart_toEndOf="@id/item_quantity"
app:layout_constraintVertical_chainStyle="spread_inside"
android:contentDescription="@string/disable_realwear_asr"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:minWidth="120dp"
app:errorIconDrawable="@null">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/data_entry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/activity_instruction_data_entry_text_size"/>
</com.google.android.material.textfield.TextInputLayout>
<ImageView
android:id="@+id/camera_scan"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginEnd="5dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@id/data_entry_layout"
app:layout_constraintTop_toTopOf="@id/data_entry_layout"
android:background="@android:color/transparent"
android:clickable="true"
android:foreground="@drawable/ripple_selector"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:src="@drawable/qrcode_scan"
android:visibility="visible"
tools:ignore="ContentDescription,KeyboardInaccessibleWidget" />
</androidx.constraintlayout.widget.ConstraintLayout>
Если я установил item_quantity
* layout_width
до 0dp
, тогда пользовательский интерфейс работает с большим количеством текста, но занимает слишком много горизонтального пространства с коротким текстом:
Если я установлю item_quantity
layout_width
на wrap_content
, то пользовательский интерфейс работает с коротким текстом, но отталкивает data_entry_layout
с экрана крупным текстом:
Мне, должно быть, не хватает чего-то простого. Есть ли способ заставить обе эти ситуации делать то, что я хочу?