27

したがって、実行時にViewStubを膨らませることができます。発生したイベント(たとえば、ユーザーが画面上で選択した内容に応じて膨張および収縮するツールバー)に応じて、それを非表示にしてから再び膨張させたいとします。

View.setVisibility(View.GONE)....を使用できます。他に方法はありますか?

それとも私はここで何か間違ったことをしていますか?

ありがとう!:)

4

2 に答える 2

35

レイアウトの膨張は、特に古いデバイスではコストがかかる可能性があります。ViewStub は、実行時にビュー階層のセクションを交換する方法ではなく、展開される場合と展開されない場合があるビュー サブツリーの遅延読み込みメカニズムと考えてください。膨らませると、VISIBLE/GONE を切り替えても問題ありません。GONE は、コストのかかるトラバーサル中にフレームワークがそのサブツリーをスキップするようにします。

これは、膨張したビューで使用されるメモリが必要ない限り当てはまります。可視性を GONE に設定しても、メモリはまったく解放されません。レイアウトと描画の目的でビューがなくなったとマークするだけです。ビュータブの膨張したビューのメモリを解放するには、膨張したビューを実際に削除し、後で使用するために新しいビュータブに再度置き換える必要があります。

于 2010-10-01T22:19:24.210 に答える
-1

はい、いつでも削除できます。私は今それを行いました。

ViewStub stub = findById(...);
View v = stub.inflate();

イベントのビューの可視性を設定します。

v.setVisibility(View.GONE);
于 2011-05-12T09:16:58.213 に答える