【发布时间】:2020-03-04 14:51:59
【问题描述】:
有一个主要是左右部分的 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>
【问题讨论】: