【问题标题】:Gone Margin constraints to multiple elements对多个元素的 Gone Margin 约束
【发布时间】:2022-01-04 07:42:57
【问题描述】:

我有一个带有 3 个按钮的约束布局,如下所示。

<androidx.appcompat.widget.AppCompatImageButton
    android:id="@+id/img_subscribe"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="@dimen/dp20"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:visibility="gone"
    />
<androidx.appcompat.widget.AppCompatImageButton
    android:id="@+id/img_start_over"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="@dimen/dp45"
    app:layout_constraintStart_toEndOf="@id/img_subscribe"
    app:layout_constraintTop_toTopOf="parent"
    android:visibility="gone"
    />
<androidx.appcompat.widget.AppCompatImageButton
    android:id="@+id/img_trailer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="@dimen/dp45"
    app:layout_goneMarginLeft="@dimen/dp20"
    app:layout_constraintStart_toEndOf="@id/img_start_over"
    app:layout_constraintTop_toTopOf="parent"
    android:visibility="visible"
    />

我只想在前两个按钮不可见时为第三个按钮留出余量。但是在这个当前代码中,如果当前一个按钮不可见时它正在占用边距。当且仅当前两个按钮不可见时,如何使第三个按钮占据已消失的边距。

任何建议表示赞赏。

【问题讨论】:

  • 如果你问我,这听起来像是 LinearLayout 的一个很好的用例
  • 只需要在约束布局中实现。那可能吗? @IvanWooll
  • 您可以将 3 个按钮包装在一个 ConstraintLayout 中吗?
  • 没有明确的方法使第三个小部件的边距取决于其他两个小部件的可见性,只需设置一个已消失的边距。当前两个小部件的可见性“消失”时,您可以以编程方式更改第三个小部件的边距。如果您必须使用已消失的边距,则有一种复杂的方法可以使用屏障和零宽度/高度小部件以及一些编码来实现,但最好只是根据代码中的需要更改边距。

标签: android android-layout android-constraintlayout layoutmargins


【解决方案1】:

这是约束布局中 Chains 的一个很好的用例。 Chains in constraintlayout

而不是使用线性布局将您的按钮链接在一起。第三个按钮将按照您的意愿占用已消失的边距

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2021-01-20
    相关资源
    最近更新 更多