回答:
見えない:
このビューは非表示ですが、レイアウトのためにスペースを占有します。
なくなった:
このビューは非表示であり、レイアウトのためにスペースを取りません。
display:none
&visibility:hidden
に類似しているようです:-)
ドキュメンテーションからあなたはそれを言うことができます
View.GONEこのビューは非表示であり、レイアウトのためにスペースをとりません。
View.INVISIBLEこのビューは非表示ですが、レイアウトのためにスペースを占有します。
いくつかの写真でアイデアを明確にしましょう。
以下のような3つのボタンがあると仮定します
ボタン2の表示を非表示(View.INVISIBLE
)に設定すると、出力は
また、ボタン2の表示を設定しないと(View.GONE
)、出力は
これであなたの疑問が解消されることを願っています。
正しい回答を追加したいと思います。表示をとして初期化するとView.GONE
、ビューが初期化されていない可能性があり、ランダムなエラーが発生します。
たとえば、レイアウトを次のように初期化してView.GONE
からアニメーションを開始しようとすると、私の経験から、アニメーションがランダムに動作します。時々はい、時々いいえ。
したがって、ビューを処理(サイズ変更、移動など)する前に、ビューを初期化するView.VISIBLE
かView.INVISIBLE
、画面でレンダリング(描画)してから処理する必要があります。
GONE
プログラムのコンパイルのたびにGoneを作成すると、コンポーネントは初期化されます。つまり、コンポーネントをレイアウトから削除します。コンポーネントを非表示にすると、コンポーネントはレイアウトで同じスペースを取りますが、初期化する必要はありません。 。
Visibility = Goneを設定した場合、コンポーネントを初期化する必要があります。
例Button _mButton = new Button(this);
_mButton =(Button)findViewByid(R.id.mButton);
そのため、Visibility = invisibleに比べて時間がかかります。
View.INVISIBLE- >ビューは非表示ですが、レイアウトの一部のスペースを占有します
View.GONE- >ビューは表示されず、レイアウトのスペースを占有しません