动态隐藏元素时,ListView不会调整大小

时间:2013-10-02 14:21:03

标签: android listview android-listview

我有一个菜单ListView,它有一个动态SignOut行,只能在用户登录时显示.ListView后面有一个阴影(不设置为页脚,而是设置为ListView后面的View)。当我删除SignOut行时它会消失,但ListView的大小不会改变,所以有一个透明的间隙然后是阴影。我使用signOutBtn.setVisibility(View.GONE);隐藏了SignOut行(我引用了signOutBtn视图,它是一个RelativeLayout)。此外,我已经验证我在任何地方都没有使用View.INVISIBLE,因为我希望这种行为使用它。

ListView使用wrap_content作为高度,我相信这就是问题所在 - 计算高度,包括SignOut按钮。

所以,问题是,当显示或隐藏行时,如何使ListView动态调整大小?我宁愿不破坏和重新创建View,虽然这是我接下来可能会尝试的,因为它是一个相对简单的视图。

PS。如果需要,我可以添加代码示例。

1 个答案:

答案 0 :(得分:1)

最后,我决定只更新适配器数据,并根据用户的登录状态删除或添加signOut行。这很简单,我能够基于显示/隐藏按钮删除相当多的条件,以及在那里为ListView适配器中的signOut按钮分配唯一ID的代码,以便我可以查找它以隐藏它