ListView 高度为 0?

3

我可以轻松地使用以下代码将行高设置为1:

View.getLayoutParams().height = 1

但是当我把它设置为0时,什么也没有发生。
是否有可能以某种方式将ListView中的行高设置为0?

1
你想将它设置为0以便隐藏它吗? - Pedantic
1
你为什么想要这样做?你是想隐藏这一行吗? - Graham Smith
是的,我正在尝试隐藏我的ListView中的一行。对我来说,这似乎是唯一的方法。 - Rasive
View.setVisibility(View.GONE)是怎样的呢? - Vladimir
4个回答

2

好的,使用View.Gone无法实现这一点,但可以用另一种方式来实现:

请查看我的帖子,其中包含整个实现过程:具有隐藏行功能的ListView

享受吧


这是一个不错的实现,但如果我按照那种方式更改getCount()方法,它会损坏我的应用程序中的数据,可惜了。但由于其他人可能能够使用你的示例,我会将其标记为已接受的答案。 - Rasive
为什么它会破坏你的数据?你能解释一下吗? - Sherif elKhatib
这只是因为我在与数据库通信时过于依赖适配器。虽然我可以做到,但这将导致重大改写。 - Rasive
@Rasive :( 我认为这将无论如何都能起作用。只需将getView的位置更改为新位置并保留旧实现即可。所有事情都归结于在函数getView()中更改您使用的位置。 - Sherif elKhatib
是的,你说得对,我可以通过调整传递给getView()方法的位置参数来解决它。感谢你的帮助。 - Rasive

1

1
是的,我已经做过了,但那只会留下一行空白,与其他行高相同。 - Rasive
基本上问题在于,如果这是我的列表,当我使用View.GONE时,会发生这种情况-> |1|2| |4| 而3应该被折叠或消失,但它仍然占据空间。这就是为什么我试图将高度设置为0,但可能是测量行时出了问题,因为我在getView()中执行所有这些操作。 - Rasive

0

尝试将行的可见性设置为 View.GONE,你的项应该会消失


正如Graham Smith的回复所述,在ListView中将View.GONE设置为项目只会使其变为空白,而不会改变它们的高度=空白行具有相同的高度。 - Hugo Gresse

0
如果你想隐藏一个ListView的行,你需要重新绑定适配器数据,但是在数据中不包含那一行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接