したがって、実行時にViewStubを膨らませることができます。発生したイベント(たとえば、ユーザーが画面上で選択した内容に応じて膨張および収縮するツールバー)に応じて、それを非表示にしてから再び膨張させたいとします。
View.setVisibility(View.GONE)....を使用できます。他に方法はありますか?
それとも私はここで何か間違ったことをしていますか?
ありがとう!:)
レイアウトの膨張は、特に古いデバイスではコストがかかる可能性があります。ViewStub は、実行時にビュー階層のセクションを交換する方法ではなく、展開される場合と展開されない場合があるビュー サブツリーの遅延読み込みメカニズムと考えてください。膨らませると、VISIBLE/GONE を切り替えても問題ありません。GONE は、コストのかかるトラバーサル中にフレームワークがそのサブツリーをスキップするようにします。
これは、膨張したビューで使用されるメモリが必要ない限り当てはまります。可視性を GONE に設定しても、メモリはまったく解放されません。レイアウトと描画の目的でビューがなくなったとマークするだけです。ビュータブの膨張したビューのメモリを解放するには、膨張したビューを実際に削除し、後で使用するために新しいビュータブに再度置き換える必要があります。
はい、いつでも削除できます。私は今それを行いました。
ViewStub stub = findById(...);
View v = stub.inflate();
イベントのビューの可視性を設定します。
v.setVisibility(View.GONE);