java - 如何使用 view.GONE 处理 ConstraintLayout 水平和垂直
问题描述
已经在约束中使用垂直和水平链来消除手柄的可见性。但它们不足以完成我想做的事情。我需要像这个例子一样设置一个视图:
1 2
3 4
5 6
例如,当我将数字 2 设置为可见性消失时,数字 3 必须取代他的位置。
我尝试做这样的事情,但我什至没有接近..
`<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/paymentCardQR"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/green"
app:layout_constraintBottom_toTopOf="@+id/paymentCardEfectivo"
app:layout_constraintEnd_toStartOf="@+id/paymentCardTarjeta"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed">
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/paymentCardEfectivo"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/red"
app:layout_constraintBottom_toTopOf="@+id/paymentCardCtaCliente"
app:layout_constraintEnd_toStartOf="@+id/paymentCardVoucher"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/paymentCardQR">
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/paymentCardCtaCliente"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/green"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/paymentCardOnline"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/paymentCardEfectivo">
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/paymentCardTarjeta"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/gray"
app:layout_constraintBottom_toTopOf="@+id/paymentCardVoucher"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/paymentCardQR"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed">
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/paymentCardVoucher"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/blue"
app:layout_constraintBottom_toTopOf="@+id/paymentCardOnline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/paymentCardEfectivo"
app:layout_constraintTop_toBottomOf="@+id/paymentCardTarjeta">
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/paymentCardOnline"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/paymentCardCtaCliente"
app:layout_constraintTop_toBottomOf="@+id/paymentCardVoucher">
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
解决方案
ConstraintLayout
恐怕这不适用,您应该RecyclerView
在单独的项目中使用每个视图,同时将GridLayoutManager
其用作具有 2 个跨度的布局管理器。
构建列表时,可以通过其适配器控制项目的数量,以使用动画平滑地notifyItemRemoved(1)
删除或notifyItemInserted(1)
添加项目。notifyDataSetChanged()
或者,您可以在更改数据集后轻松调用完整但性能不佳的适配器更新。
推荐阅读
- c++ - 带有模板的二进制搜索功能,用于数组 - 编译问题
- crystal-reports - Crystal Reports,没有从我的公式中获取值以显示在报告字段中
- jenkins - 下一个触发器覆盖的 Jenkins webhook 有效负载
- c# - upsert 不存在 (Couchbase) (.Net SDK 3.0)
- flutter - 如何在活动时从父级更新 ModalBottomSheet 的内容
- javascript - 无法在 Redux、React JS 中调用 TextInput 的 onChange 函数
- nativescript - 无法将 nativescript 应用程序部署到 ios 模拟器或真实设备
- sql-server - SQL 排序规则中的最大字符值是否有很好的表达方式?
- javascript - React Native 中的 NetInfo 使用模式
- c# - 有没有办法防止 Xamarin Forms 滚动视图在打开选择器控件时自动滚动到最后编辑的条目?