【问题标题】:Can I use .setVisibility(View.GONE) or should I just remove the View itself?我可以使用 .setVisibility(View.GONE) 还是应该删除视图本身?
【发布时间】:2012-02-05 21:22:30
【问题描述】:

我有一个布局和一些动态添加的按钮。有时这些按钮应该会消失,所以我决定使用:

myButton.setVisibility(View.GONE)

如果我可以有很多按钮,例如 20-30 个,这是不是一个好方法? 还是从布局中完全删除按钮然后在需要时再次添加的更好方法,或者我应该只使用可见性修改器? 哪个更好,优点和缺点..!?

【问题讨论】:

  • 你的用户界面快照将帮助我们了解哪个更适合你

标签: android button visibility


【解决方案1】:

如果您确实有 20-30 个按钮的可见性发生变化,我想您应该采用最少数量(我猜低于 10)的按钮并更改它们的属性,而不是每次都创建它们或更改它们的可见性。

【讨论】:

  • 我制作了一个游戏,所以你真的无法预测布局中发生了什么,所以请考虑一下:我的布局是一个背包,所有按钮都是背包中“项目”的图标,每个具有各种能力的 onClickListener 等,我无法确定玩家将持有什么以及他们使用什么,他们的背包中可能只有 2-3 件或贪婪并使用所有空间。 (30)
【解决方案2】:

20-30 个按钮听起来很多。通常使用可见性参数并没有错,但如果您考虑拥有这么多视图,您可能应该考虑只使用几个视图并将它们重用于不同的事情。

【讨论】:

  • 可见性变化经常发生,但不是很快,而且在同一时间不多,所以只有一个按钮发生变化,然后是一些交互,然后是另一个,等等,如果可以使用 Visi 修改器,我的意思是,如果它没有发生内存泄漏或类似的事情,我会保持这种方式。你怎么看?
  • 你可以。但是,我认为管理 30 个视图的可见性比仅重用几个视图更麻烦。此外,布局中的视图越多,膨胀所需的时间就越长。
【解决方案3】:

我认为最好和常见的方法是使用 .setVisibility(View.GONE) 也许对您来说最好的方法是将 ALL 默认设置为消失(在 XML 布局中定义)并按需启用。

例如,我认为 ListView 非常聪明,并且更喜欢将视图标记为 GONE 而不是删除它。

而且我认为 Android 总体上也很聪明,因此它会理解您不需要将视图设置为消失 :)

更新:

也许对您来说最好的方法是从代码中添加这些按钮,这样您就可以根据需要创建许多按钮:)

【讨论】:

  • 我从代码中创建按钮,但只要我不需要它们,它们就会因可见性变化而消失,如果它很好,我会保持这种方式,如果我需要它们再次使用 .setVisibility (View.VISIBLE)
【解决方案4】:

如果您需要删除它们然后再次显示它们,最好将可见性设置为已消失,然后再次变回可见,以避免一遍又一遍地重新创建大量按钮再次。
另一方面,如果您不再需要它们可见,只需将它们删除即可。

【讨论】:

  • 好的,我再次需要它们,所以 Visi 更换就可以了,我想谢谢!
  • 我读到你评论说它是游戏中的背包,如果是这样的话,我建议你保留所有 30 个按钮,当你需要在背包中添加一个项目时您修改按钮并将其设置为可见(不创建新按钮)。当用户随后使用您将按钮设置回消失的项目时。
  • 但是,我认为您最好使用网格视图、列表视图或使用适配器的其他视图。那么您不必担心创建/隐藏/删除按钮,因为视图会自动为您处理。
  • “视图会自动为您处理”是什么意思?我的按钮在一个简单的 LinearLayout 上,为什么 gridview 会更好?
  • ListView 在您的情况下可能是最好的,它可以从 ArrayList 或 Array(或其他数据结构)中获取数据并显示为列表(即,可滚动的线性布局) .如果向数组添加或删除项目,布局会自动更新。也就是说,您可以在用户的​​背包中拥有一组物品,当他使用某个物品时,您可以将其从数组中删除。这会导致列表视图删除与该项目对应的视图。如果您向数组中添加一个新项目,则会在列表中添加一个新项目。
猜你喜欢
  • 2013-11-28
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 2013-04-17
  • 2016-08-31
  • 2016-03-31
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多