gpt4 book ai didi

android - 减少android中gridlayout的行/列数

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:18 27 4
gpt4 key购买 nike

我需要一个可以在 3×3 和 4×4 之间切换的动态 gridlayout。我可以 setRowCountsetColumnCount 从 3 到4 但不是从 4 到 3。它会显示以下问题:

Caused by: java.lang.IllegalArgumentException: rowCount must begreater than or equal to the maximum of all grid indices (and spans)defined in the LayoutParams of each child.

是否有任何解决方法可以使用 gridlayout 实现此目的?

最佳答案

我意识到这个问题已经很老了,但是对于今天仍然遇到这个异常的人,我将提供一个解释,可能会阐明缩小 GridLayout 的工作原理以及我认为它是/正在抛出异常的原因对于 OP。

简而言之:

GridLayout 的 subview 在缩小后可能会占用不在 GridLayout 网格内的单元格,这会导致 OP 提到的 IllegalArgumentException。为避免这种情况,请在实际调用 setRowCount()setColumnCount() 之前移除将占据 GridLayout 网格外部单元格的 subview 。这可以通过 GridLayout.removeView(aboutToBeIllegalChild); 或使用 GridLayout.removeAllViews(); 删除整个布局来完成。

在龙:

调用 GridLayout.setRowCount() 所做的只是指定布局应包含的新行数。但是,它不会与 GridLayout 当前包含的 subview 混淆,也不会指定 Spec( subview 占据的列和行) ).

异常基本上告诉我们,并且文档确认,GridLayout 不允许其任何 subview 占据 GridLayout 之外的单元格> 网格。例如,当网格仅为 4 x 1 时,布局将不允许 subview 占用单元格 (5, 1)

这让我们明白了为什么最初的发帖人能够成功地动态增加 GridLayout 的尺寸,而在减少它时却失败了。扩大尺寸时,如果网格动态接收额外的行或列,则任何已附加到具有指定单元格的 GridLayout 的 subview 仍将放置在合法单元格中。当减少网格的尺寸时,放置在将因删除行或列而消失的单元格中的 subview 现在将被视为非法。

要解决此问题,您必须通过调用 GridLayout.removeView(aboutToBeIllegalChild); 预先从其父级 GridLayout 中删除那些(即将成为)非法 subview ;或者只需调用 GridLayout.removeAllViews(); 即可删除整个 GridLayout

希望这对您有所帮助!

关于android - 减少android中gridlayout的行/列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26514673/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com