Android:見えないものとなくなったものの違いは?


477

ビューの可視性ステータスinvisibleとの違いは何goneですか?


26
ビューがなくなったとき、それはレイアウトでスペースを取らないことを意味します。非表示の場合、レイアウトに必要なスペースが確保されますが、表示されません。
DroidBender 2012

回答:


709

見えない:

このビューは非表示ですが、レイアウトのためにスペースを占有します。

なくなった:

このビューは非表示であり、レイアウトのためにスペースを取りません。


113
HTML / CSSのdisplay:nonevisibility:hiddenに類似しているようです:-)
anishsane

またはWPF XAMLで非表示にして折りたたむ
18

1
表示されていない場合、クリックしても無効になりますか?
Kuldeep Yadav

1
@KuldeepYadavはい、それはなくなって見えなくなります。
スティーブモレッツ

1
将来の好奇心旺盛な読者のために:リスト/グリッドビューで非表示であっても、performItemClickを使用できます。
ランキング

264

ドキュメンテーションからあなたはそれを言うことができます

View.GONEこのビューは表示であり、レイアウトのためにスペースをとりません。

View.INVISIBLEこのビューは表示ですが、レイアウトのためにスペースを占有します。


いくつかの写真でアイデアを明確にしましょう。

以下のような3つのボタンがあると仮定します

ここに画像の説明を入力してください

ボタン2の表示を非表示(View.INVISIBLE)に設定すると、出力は

ここに画像の説明を入力してください

また、ボタン2の表示を設定しないと(View.GONE)、出力は

ここに画像の説明を入力してください

これであなたの疑問が解消されることを願っています。


4
アイデアをクリアする必要がありますか?説明だけからすれば、私には十分にはっきりしているようです。
John Dvorak

16
@JanDvorak :)すごい!あなたの質問には答えられません。これがすべてのユーザーにとって非常に明確であると考える場合、受け入れられる回答はコメントであり、ドキュメントサイトへのリンクが必要です。私は正しいですか?
Pankaj Kumar

edittextに使用するとどうなりますか?edittextから値を取得することは可能ですか?
Ashish

32

ListViewまたはGridViewの場合、別の違いがあります。

見えない:

呼び出されたアダプターのgetView()関数

なくなった:

アダプターのgetView()関数が呼び出されなかったため、不要な場合はビューをロードできませんでした


10

見えない:
非表示ビューを描画する必要があり、時間がかかります。

GONE:
ビューを描画する必要はありません。


8
ビューは描画されず、測定されてレイアウトされます。
2016年

@cyroxis多分彼/彼女はondrawメソッドを意味します!
デビッド

7

正しい回答を追加したいと思います。表示をとして初期化するとView.GONE、ビューが初期化されていない可能性があり、ランダムなエラーが発生します。

たとえば、レイアウトを次のように初期化してView.GONEからアニメーションを開始しようとすると、私の経験から、アニメーションがランダムに動作します。時々はい、時々いいえ。

したがって、ビューを処理(サイズ変更、移動など)する前に、ビューを初期化するView.VISIBLEView.INVISIBLE、画面でレンダリング(描画)してから処理する必要があります。


はい、あなたは正しいです、それがビューであるときのみ時々機能しますGONE
Suraj Bahadur

4

プログラムのコンパイルのたびにGoneを作成すると、コンポーネントは初期化されます。つまり、コンポーネントをレイアウトから削除します。コンポーネントを非表示にすると、コンポーネントはレイアウトで同じスペースを取りますが、初期化する必要はありません。 。

Visibility = Goneを設定した場合、コンポーネントを初期化する必要があります。

例Button _mButton = new Button(this);

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

そのため、Visibility = invisibleに比べて時間がかかります。



0

View.GONE =ビューは表示されず、残りのビューはその存在を考慮しません。

View.INVISIBLE =ビューは表示されませんが、レイアウトで割り当てられたスペースを取ります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.