2013-10-02 35 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的代碼,因此我可以查找它以隱藏它。