2012-07-19 60 views
349

查看可見度狀態,invisiblegone之間的區別是什麼?Android:看不見又走不通?

+18

當視圖消失時,這意味着它不佔用佈局中的任何空間。當它不可見時,它將佔用佈局中的必要空間,但你只是看不到它。 – DroidBender 2012-07-19 08:16:02

回答

539

無形:

這種觀點是無形的,但它仍然佔用空間佈局的目的。

GONE:

這種觀點是不可見的,並且它不採取任何空間佈局的目的。

+86

在HTML/CSS中看起來類似於'display:none'&'visibility:hidden' :-) – anishsane 2014-01-30 06:18:00

26

對於ListView的或GridView中存在另一個差,當能見度最初設置爲

INVISIBLE:

適配器的getView()函數調用

GONE:

適配器的ge tView()函數沒有調用,從而防止意見加載,當不需要

196

Documentation可以說

View.GONE這種觀點是不可見的,它不會佔用任何空間用於設計目的 。

View.INVISIBLE這種觀點是無形的,但它仍然佔用空間佈局的目的。


讓我們清楚一些圖片的想法。

假設您有三個按鈕,如下面

enter image description here

現在,如果你設置兩個按鈕爲不可見(View.INVISIBLE)的知名度,那麼輸出將是

enter image description here

當你設置兩個按鈕的能見度,走了(View.GONE),那麼輸出將是

enter image description here

希望這會清除你的疑慮。

+3

這個想法是否需要清除?從解釋來看,這對我來說似乎很清楚。 – 2015-03-12 05:59:44

+12

@JanDvorak :)太棒了!我沒有回答你的問題。如果您認爲這對所有用戶都非常清楚,那麼接受的答案應該是評論並且有文檔站點的鏈接。我對麼? – 2015-03-12 06:09:53

+10

感謝@PankajKumar爲例。 – 2016-03-29 15:12:37

8

INVISIBLE:
該視圖必須繪製,需要時間。

GONE:
該視圖不一定要繪製。

+7

視圖不繪製,它被測量和佈局。 – cyroxis 2016-05-06 15:31:46

+0

@cyroxis也許他/她的意思是提取方法! – David 2017-11-13 07:29:19

4

我想添加正確的和成功的答案,如果你初始化視圖的可見性爲View.GONE,視圖可能沒有初始化,你會得到一些隨機錯誤。

例如,如果初始化佈局爲View.GONE,然後嘗試開始動畫,則根據我的經驗,我的動畫會隨機工作。有時是的,有時沒有。

因此,在處理(調整大小,移動任何視圖)之前,您必須將其初始化爲View.VISIBLEView.INVISIBLE以在屏幕中呈現它(繪製它),然後對其進行處理。

1

當你編譯程序時每次編譯程序時組件被初始化,這意味着你要從佈局中移除組件,當你使組件不可見時,它將在佈局中佔用相同的空間,但是每次你都不會需要初始化它。

如果設置能見度=走了,那麼你必須初始化component..like

如按鈕_mButton =新按鈕(本);

_mButton =(Button)findViewByid(R.id.mButton);

因此,與可見性=不可見相比,它需要更多的時間。

3
  • View.INVISIBLE - >觀是無形的,但它會在佈局佔據一定的空間

  • View.GONE - >觀是不可見的,它不會佔用任何空間在佈局中