2011-07-04 10 views

答えて

22

は<は全部が1つだけの大きなファイルであるかのように/>はちょうどあなたのベースのXMLファイルのXMLコンテンツが含まれます含まれています。これは、異なるレイアウト間でレイアウト部品を共有するうえで便利です。

< ViewStub />それはあなたが(実際に見える)VISIBLEまたはINVISIBLE(への可視性を設定したときに/、すなわち、それを必要とし、直接含まれていない、とあなたが実際にそれを使用する場合にのみロードされますので、少し異なっていますまだ見えませんが、サイズはもう0ではありません)。これはすばらしい最適化です。なぜなら、多数の小さなビューやヘッダーを持つ複雑なレイアウトをどこにでも持つことができ、アクティビティのロードを非常に高速にすることができるからです。これらのビューのいずれかを使用すると、そのビューが読み込まれます。

+1

ビューの可視性を「true」に設定できますか?ビューの唯一の可視性オプションは 'VISIBLE'、' INVISIBILE'、 'GONE'ですか?ビューが 'VISIBLE'である場合にのみビューがロードされますか、' GONE'でない場合にロードされますか? – RestInPeace

+1

@RestInPeace確かに、どうして私はそれを書いたのか分かりません(3年経ちました...)。ドキュメントから: "可視性が' VISIBLE'または 'INVISIBLE'に設定されると、inflate()が呼び出され、このStubbedViewはその親で膨張されたレイアウトリソースに置き換えられます。"したがって、可視性が「GONE」以外に設定されているときは膨らみます。 – Gregory

+0

清算していただきありがとうございます。 – RestInPeace

3

共有と再利用レイアウトは時にはあまりにも簡単、タグにAndroidのおかげで非常に簡単です、あなたはめったに使用されているそのうちのいくつかのビュー、多数が含まれているユーザインタフェースで終わるかもしれません。ありがたいことに、AndroidにはViewStubという非常に特別なウィジェットが用意されています。これはほとんど使用されないビューでユーザーインターフェースを汚染することなく、すべてのメリットをもたらします。

A ViewStubはダムと軽量な図です。次元を持たず、何も描画せず、レイアウトに参加しません。つまり、ViewStubは非常に安価で膨大になり、ビューの階層構造を維持するには非常に安価です。 ViewStubは、怠惰なインクルードとして最もよく記述できます。 ViewStubによって参照されるレイアウトは、あなたが決定したときにのみ膨張され、ユーザインタフェースに追加されます。

+0

http://android-developers.blogspot.com/2009/03/android-layout-tricks-3-optimize-with.html – Zyoo

8
  • これは、レイアウトリソース
  • ViewStub
    reuseに使用されている
    もう一つの重要な違いは、レイアウトの膨張に関連しているlazily inflateレイアウトリソース
0

に使用されています。 XMLですでに静的に膨張しているレイアウトを変更することはできないため、ビューを置き換えてプログラムでレイアウトパラメータを設定する必要があります。 実行時に高さや幅などを定義して別のレイアウトを膨張させることができます

関連する問題