[英]How to set (programatically) Gone Margin in Constraint Layout?
有一個用例,其中4
視圖垂直連接(從上到下分別命名為“A”、“B”、“C”、“D”)。
<include
android:id="@+id/A"
layout="@layout/search_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dimen_16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/B"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_marginTop="12dp"
android:nestedScrollingEnabled="false"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/A"
tools:itemCount="3"
tools:listitem="@layout/item_layout"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/C"
android:layout_width="@dimen/dimen_0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dimen_16dp"
android:layout_marginTop="12dp"
android:drawableStart="@drawable/ic"
android:drawablePadding="@dimen/dimen_6dp"
android:fontFamily="@string/font_family_roboto_regular"
android:text="@string/pb_tag_error_note"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/B"
tools:visibility="visible" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/D"
android:layout_width="@dimen/dimen_0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dimen_16dp"
android:background="#11101010"
android:fontFamily="@string/font_family_roboto_medium"
android:paddingHorizontal="@dimen/dimen_16dp"
android:paddingVertical="6dp"
android:text="@string/text"
android:textColor="@color/black"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/C"
app:layout_goneMarginTop="@dimen/dimen_12dp"
tools:visibility="visible" />
當 C 不可見時,gone margin 設置為12dp
,導致“B”的高度為16dp
( 12dp
+ 4dp
RV 項目邊距)。 但是當“B”和“C”都消失時,“A”和“D”之間的差距需要是24dp
。
我現在使用的方法是以編程方式將 D 附加到 A 的底部並將邊距設置為 24dp。 當 B 和 C 都消失時,有沒有辦法可以將 D 的頂部邊緣設置為 24dp?
您可以按如下方式使用Space小部件:
12dp
。 將此小部件space
命名為。bottom
,引用的 id 為space,C
。您可能需要進行一些其他調整。
這個想法是Space小部件將在“A”下方保留12dp
的空間,但不添加任何可見的空間。 "D" 將隨着小部件以12dp
的邊距消失而上浮,直到它到達Space為止。 那時它將有12dp
的上邊距加上Space ( 12dp
) 的高度,即24dp
。
這是一個示例布局:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp">
<TextView
android:id="@+id/A"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/holo_blue_light"
android:gravity="center_horizontal"
android:text="A"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Space
android:id="@+id/space"
android:layout_width="wrap_content"
android:layout_height="12dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/A" />
<TextView
android:id="@+id/B"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:background="@android:color/holo_blue_light"
android:gravity="center_horizontal"
android:text="B"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/A" />
<TextView
android:id="@+id/C"
android:layout_width="@dimen/dimen_0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:background="@android:color/holo_blue_light"
android:gravity="center_horizontal"
android:text="C"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/B"
app:layout_goneMarginTop="12dp" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierAllowsGoneWidgets="true"
app:barrierDirection="bottom"
app:constraint_referenced_ids="space,C" />
<TextView
android:id="@+id/D"
android:layout_width="@dimen/dimen_0dp"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:background="@android:color/holo_blue_light"
android:gravity="center_horizontal"
android:text="D"
android:textColor="@color/black"
android:textSize="14sp"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/barrier" />
</androidx.constraintlayout.widget.ConstraintLayout>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.