GridLayout 动态变化以填充 Gone 视图
Posted
技术标签:
【中文标题】GridLayout 动态变化以填充 Gone 视图【英文标题】:GridLayout dynamically change to fill Gone view 【发布时间】:2022-01-11 22:23:26 【问题描述】:我正在使用 GridLayout 来设计一个基于 2 列的仪表板。所以我只是添加小部件,它直接定义了网格。
我遇到的问题是,我有 12 个单元格,但根据信息可用性,有些单元格将设置为 View.VISIBLE
或 View.GONE
。我遇到的问题是,当单元格设置为View.GONE
时,它没有显示,但空间仍然存在。
我希望当我将一个单元格设置为View.GONE
时,下一个设置为View.VISIBLE
的单元格会显示出来,并且不会让我的屏幕中间出现一个空单元格。
抱歉,我无法发布我的屏幕图像,所以我尝试制作一个。以上是我看到的。我期待当一个单元格设置为View.GONE
时,这些单元格会重新排列自己并且不会出现空单元格
我使用的xml是:
<GridLayout
android:id="@+id/grid"
android:layout_
android:layout_
android:layout_marginTop="20dp"
android:columnCount="2"
android:orientation="horizontal">
<include
android:id="@+id/button1"
android:layout_
android:layout_
android:layout_columnWeight="1"
layout="@layout/button_a"
bind:tileModel="@model.button1"/>
<include
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_columnWeight="1"
layout="@layout/button_b"
bind:tileModel="@model.button2"/>
<include
android:id="@+id/button3"
android:layout_
android:layout_
android:layout_columnWeight="1"
layout="@layout/button_a"
bind:tileModel="@model.button3"/>
<include
android:id="@+id/button4"
android:layout_
android:layout_
android:layout_columnWeight="1"
layout="@layout/button_c"
bind:tileModel="@model.button4"/>
<include
android:id="@+id/button5"
android:layout_
android:layout_
android:layout_columnWeight="1"
layout="@layout/button_b"
bind:tileModel="@model.button5"/>
<include
android:id="@+id/button6"
android:layout_
android:layout_
android:layout_columnWeight="1"
layout="@layout/button_a"
bind:tileModel="@model.button6"/>
tileModel
接收 viewModel 并将信息传递给关联的布局。
有什么想法吗?
【问题讨论】:
如果您的数据是动态的,请以相同的方式构建布局。检查需要哪些信息(通过 ViewModel),然后在 gridview 中添加相关子项。 @DarShan 所以主要是通过编程方式,我只是添加我需要的东西,而不是试图让它们可见/消失 不,我的意思是add
根据您的数据查看您需要的 GridView。
@DarShan 是的,但 add
是通过代码完成的。 XML 不应该包含任何项目,只有 GridLayout 和我在代码中使用 grid.add()
我建议使用带有 GridLayout 的 RecyclerView 和带有 DiffUtil 的 ListAdapter。您可以从项目的支持列表中添加和删除项目,它会为您设置动画。
【参考方案1】:
你应该试试 View.INVISIBLE 而不是 View.GONE,因为 View.INVISIBLE 只隐藏视图而不是它的空间,而 View.GONE 隐藏视图以及它占用的空间。
【讨论】:
以上是关于GridLayout 动态变化以填充 Gone 视图的主要内容,如果未能解决你的问题,请参考以下文章
Java Swing - JPanel 和 GridLayout 边距/填充
动态创建选项卡 QTabWidget 并填充表格 QTableWidget