表示状態のinvisible
とgone
の違いは何ですか?
不可:
このビューは表示されていませんが、レイアウトのためにスペースを取っています。
なくなった:
このビューは表示されず、レイアウトのためにスペースを取りません。
ドキュメント からそれを言うことができます
View.GONEこのビューは表示されず、レイアウトのためにスペースを取りません。
View.INVISIBLEこのビューは表示されませんが、レイアウトのためにスペースを取っています。
いくつかの写真でアイデアを明確にしましょう。
以下のように3つのボタンがあるとします
Button Twoの表示設定を非表示(View.INVISIBLE
)に設定した場合、出力はになります。
ボタン2の表示設定を消した状態(View.GONE
)に設定すると、出力はになります。
これがあなたの疑問を解消することを願っています。
ListViewまたはGridViewの場合、可視性が最初にに設定されている場合は、別の違いがあります。
不可:
アダプタのgetView()関数が呼び出されました
なくなった:
アダプタのgetView()関数が呼び出さなかったため、ビューが不要な場合にビューをロードできません。
不可:
見解を描く必要があり、時間がかかります。
なくなった:
見解を描く必要はありません。
あなたがView.GONE
として可視性を持つビューを初期化するならば、ビューが初期化されなかったかもしれなくて、そしてあなたがあなたが若干のランダムエラーを受けるであろうということを正しいそして成功した答えに付け加えたい。
たとえば、レイアウトをView.GONE
に初期化してからアニメーションを開始しようとした場合、私の経験からすると、私のアニメーションはランダムに動作しています。時にははい、時にはいいえ。
そのため、ビューを処理(サイズ変更、移動など)する前に、画面に表示(描画)するためにView.VISIBLE
またはView.INVISIBLE
として初期化してから処理する必要があります。
View.INVISIBLE - >ビューは見えませんが、レイアウト上のスペースを占有します。
View.GONE - >ビューは表示されず、レイアウト内のスペースを占有しません。
プログラムをコンパイルするたびに削除されると、コンポーネントは初期化されます。つまり、レイアウトからコンポーネントを削除します。コンポーネントを非表示にすると、レイアウト内で同じスペースを使用しますが、初期化する必要はありません。
visibility = Goneを設定した場合は、コンポーネントを初期化する必要があります。
例Button _mButton = new Button(this);
_mButton =(ボタン)findViewByid(R.id.mButton);
そのため、Visibility = invisibleと比べて時間がかかります。