Наличие ConstraintLayout с преимущественно левой и правой частью. Правая сторона имеет фиксированный контент. Левая сторона содержит несколько элементов по вертикали, и некоторые из них динамически отображаются / скрываются.
Пустоши, как и левая сторона, всегда центрированы по вертикали, например, когда видны только AAA, CCC:
---------------- -----------------
| | | |
| | | |
| | | |
| AAA | | |
| | | |
| CCCC | | |
| | | |
| | | |
| | | |
-----------------------------------
когда некоторые ddd, BBB, BBB видны
---------------- -----------------
| | | |
| AAA | | |
| | | |
| AAA | | |
| | | |
| BBB | | |
| | | |
| CCC | | |
| | | |
-----------------------------------
Сделано одно, но не удалось отцентрировать вертикальный центр, как сделать так, чтобы оно не фиксировалось по верху / низу и все дополнительное пространство должно быть распределено выше и ниже:
->
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/top_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="20dp"
>
<TextView
android:id="@id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:layout_marginBottom="10dp"
android:ellipsize="end"
android:maxLines="2"
app:layout_constraintEnd_toStartOf="@id/_container"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:layout_goneMarginEnd="0dp"
app:layout_goneMarginStart="0dp"
tools:text="title: lone test test test test test test test test test" />
<View
android:id="@+id/_rating"
android:layout_width="80dp"
android:layout_height="20dp"
android:layout_marginEnd="6dp"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
app:layout_constraintBottom_toTopOf="@id/_text"
app:layout_constraintEnd_toStartOf="@id/_cta"
app:layout_constraintHorizontal_bias="0.07"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintVertical_bias="0.79"
tools:background="#ff0000"
tools:visibility="gone"
/>
<com.google.android.material.button.MaterialButton
android:id="@+id/_cta"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="26dp"
android:layout_marginTop="6dp"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintStart_toEndOf="@id/_rating"
android:maxLines="1"
app:cornerRadius="20dp"
android:textSize="9sp"
android:textAllCaps="false"
android:textColor="#770000ff"
app:strokeColor="#770000ff"
android:layout_marginLeft="6dp"
android:insetTop="0dp"
android:insetBottom="0dp"
android:text="Install It"
tools:visibility="gone"
/>
<TextView
android:id="@+id/_text"
style="@style/doublePlay.textRegular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:ellipsize="end"
android:maxLines="1"
android:text="The Compmany"
android:textSize="15sp"
app:layout_constraintTop_toBottomOf="@id/_cta"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
/>
<ImageView
android:id="@+id/_icon"
android:layout_width="14dp"
android:layout_height="14dp"
android:layout_marginLeft="6dp"
android:src="#ff00ff"
app:layout_constraintTop_toTopOf="@id/_text"
app:layout_constraintBottom_toBottomOf="@id/_text"
app:layout_constraintStart_toEndOf="@id/_text" />
<TextView
android:id="@+id/_name"
style="@style/doublePlay.textRegular"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:textSize="15sp"
android:maxWidth="120dp"
android:maxLines="1"
android:ellipsize="end"
app:layout_constraintTop_toTopOf="@id/_text"
app:layout_constraintBottom_toBottomOf="@id/_text"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/_icon"
tools:text="The Interest long long long long long" />
<FrameLayout
android:id="@+id/_container"
android:layout_width="100dp"
android:layout_height="114dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@color/black"
>
<ImageView
android:id="@+id/_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@null"
android:scaleType="fitCenter"
android:visibility="visible"
tools:src="@color/blue"/>
<FrameLayout
android:id="@+id/_video"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>