2013-10-02 34 views
0

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

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

所以,问题是,如何在显示或隐藏行时使ListView动态调整大小?我宁愿不摧毁并重新创建视图,尽管这是我可能接下来尝试的,因为它是一个相对简单的视图。

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

+0

[如何在Android的ListView中隐藏项目]的可能重复(http://stackoverflow.com/questions/5041499/how-to-hide-an-item-in-a-listview-in-android ) – Geobits

+0

你使用实际的ListView吗?如果你这样做,你在哪里设置按钮的可见性?您应该从列表中删除相应的列表项,而不是设置可见性。我只是假设listview会为每个元素渲染相同的大小,即使元素的视图不见了... – jpm

+0

@jpm,是的,它是一个实际的ListView,如果我需要实际删除并添加View I'会走那条路。希望确保没有其他东西我首先忽略,对于Android开发来说是相对较新的。 – LocalPCGuy

回答

1

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