使用ConstraintLayout中具有纵横比的视图填充剩余空间

问题描述 投票:3回答:1

我在垂直链中有两个视图(视图,视图)。 viewA的纵横比应始终为1:1,而视图的高度是动态的(可能是400dp,可能是700dp)

预期结果:当viewB的高度太大而不适合屏幕中的两个视图时,应减小宽度视图(保持纵横比)。

实际结果:如果视图的高度太大,则视图的宽度始终与父视图和视图保持一致。

注意:希望使用ConstantsLayout并且没有嵌套的视图组。

<View
    android:id="@+id/viewA"
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toTopOf="@+id/viewB"
    app:layout_constraintDimensionRatio="h,1:1"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_chainStyle="spread"/>

<View
    android:id="@+id/viewB"
    android:layout_width="match_parent"
    android:layout_height="700dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/viewA"/>
android android-layout android-constraintlayout
1个回答
3
投票

将顶视图的尺寸比率更改为以下内容:

app:layout_constraintDimensionRatio="w,1:1"

现在,当底部视图高度发生变化时,顶部将根据需要进行跟踪,同时保持1:1的比例。我添加了颜色以更好地查看布局中的视图。

在700dp的底部视图

enter image description here

底部视图为500dp

enter image description here

底部视图为200dp

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.