AViewStub
はdumb and lightweight
ビューです。ありno dimension
、何も描画せず、レイアウトにはまったく関与しません。これは、がビュー階層ViewStub
に非常に含まれていることを意味します。cheap to inflate and very cheap to keep
はViewStub
として最もよく説明できますlazy include
。によって参照されるレイアウトViewStub
はinflated and added
、ユーザー インターフェースのみwhen you decide
です。
complex views
まれにしか使用されないレイアウトが必要になる場合があります。アイテムの詳細、進行状況インジケーター、元に戻すメッセージのいずれであっても、必要なときにのみビューを読み込むことで、メモリ使用量を削減し、レンダリングを高速化できます。
単純に aViewStub
を使用して、レイアウトのレンダリングの効率を高めます。を使用するViewStub
と、手動でビューを作成できますが、ビュー階層に追加することはできません。実行時に、簡単に膨張できます。膨張している間ViewStub
、 のコンテンツは でviewstub
定義されたレイアウトに置き換えられますviewstub
。
はViewStub
、実際に使用する/必要な場合、つまり、可視性をVISIBLE
(実際には可視) またはINVISIBLE
(まだ可視ではないが、サイズが 0 ではなくなった) に設定した場合にのみロードされます。どこでもコンプレックスを持つことができ、それでもViewStub
あなたnice optimization
の. これらのビューのいずれかを使用すると、読み込まれます。layout with tons of small views or headers
Activity load up really fast
ViewStub
別のビューに膨らませた後、最初にレイアウトに追加する必要があります。
注:の欠点の 1 つは、レイアウト内のタグのインフレートをViewStub
現在サポートしていないことです。<merge/>
アロスViewStub
は複数回使用できません。また、 a への長期間の参照を保持するViewStub
必要はありません。必要な場合は、インフレ後に null にすることをお勧めします。これGC
により、食べることができます。
あなたのViewStub
ID がだとしましょうview_stub
。で次のことを行う必要がありますactivity
。
ViewStub viewStub = (ViewStub) findViewById(R.id.view_stub);
View inflatedView = viewStub.inflate();
ImageButton button = (ImageButton) inflatedView.findViewById(R.id.button);
これで、ボタンを使ってやりたいことが何でもできます :) つまり、inflate メソッドは、XML ファイルの実際の要素を含むスタブ レイアウトを返します。
もちろん、常にonClick
XML 属性を持つことも、動的に呼び出すこともできます。
Is a ViewStub worth it?
->For the scenarios that you are specifying, I think `ViewStub` will be worth-shot.
については以下の URL を参照してくださいViewStub
http://android-developers.blogspot.in/2009/03/android-layout-tricks-3-optimize-with.html
http://developer.android.com/reference/android/view/ViewStub.html
http://developer.android.com/training/improving-layouts/loading-ondemand.html
あなたの代わりにViewStub
試すことができます<\include> tag
。は<include/>
、全体が 1 つの大きなファイルであるかのように、xml コンテンツをベース xml ファイルに含めるだけです。これは、異なるレイアウト間でレイアウト パーツを共有するための優れた方法です。
アンドロイドの <include> と <ViewStub> の違い