簡體   English   中英

對多個元素的 Gone Margin 約束

[英]Gone Margin constraints to multiple elements

我有一個帶有 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"
    />

只有當前兩個按鈕不可見時,我才想為第三個按鈕留出余量。 但是在這個當前代碼中,如果當前一個按鈕不可見時它正在占用邊距。 當且僅當前兩個按鈕不可見時,如何使第三個按鈕獲取已消失的邊距。

任何建議表示贊賞。

您可以做的可能是將按鈕添加到線性布局並在約束布局中約束該線性布局。 您將獲得線性布局的優勢,而無需刪除約束布局。

基本上像 -

<constraint>

    <linear>
        <button1>
        <button2>
        <button3>
    </linear>

    <...everythinng else>

</constraint>

如果這不是您想要的,您可能必須在后端使用 livedata 和/或 if else 條件並手動設置。

這是約束布局中的一個很好的用例。 約束布局中的鏈

而不是使用線性布局將您的按鈕鏈接在一起。 第三個按鈕將按照您的意願占用已消失的邊距

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM