2016-05-17 4 views

答えて

1

あなたがViewStubを使用するときに、this articleで見ることができるように、必要な場合を除き、あなたのスタブ内の<include />は(VISIBLEにスタブの可視性を設定したりshow()を呼び出す)に膨張されることはありませんレイアウト。 利点は、含まれているビューのいずれもビュー階層に含まれないため、ビューがより軽いことです。膨張させた後 enter image description here

: ViewStubが膨張ません:

は、この例を参照してください もちろんenter image description here

あなただけ(()(またはshow)VISIBLE reinflateを設定するときに、ここでのトレードオフを持っていますViewStubレイアウト上)が発生します。

+0

おかげであなたの答え。私もこの記事を見つけました。ビューと.addView()を動的に削除()するとどうなりますか? ViewStubを使用する代わりに、削除するとメモリも削除されます。それは同じ考えかどうか? – eralp

+0

あなたは正しいです、それはメモリからビュー全体を削除します。問題は、Viewの追加と削除のパフォーマンスです。コストのかかる操作です。そのため、ViewStubはGoogleが作成したものです。ビュー階層の一部を膨らませているだけなので、軽くなっています。 – Leonardo

+0

ありがとうございました。 [Leonardo Ferrari](https://stackoverflow.com/users/1232131/leonardo-ferrari) – eralp

0

ViewStubは、パフォーマンスの面でビューを追加するのと同じです。 ViewStub.inflate()を見てください。それは動的にビューを追加することです。

public View inflate() { ... final View view = factory.inflate(mLayoutResource, parent, false); ... parent.addView(view, index, layoutParams); } else { parent.addView(view, index); } ... return view; }

https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/ViewStub.java

関連する問題