線形レイアウトを動的に設定しています。応答に応じて、過去の子ビューをクリアし、新しいビューを作成する必要があります。私はドキュメントを読みましたが、まだいくつかのメソッドと混同されています.それらはすべて同じ機能に見えます. どの関数を使用する必要がありますか。
3 に答える
removeAllViews()
: ViewGroup からすべての子ビューを削除するには、このメソッドを呼び出します。
removeAllViewsInLayout()
: ViewGroup サブクラスによって呼び出され、それ自体から子ビューを削除します。これは、レンダリングする子ビューの数を計算する前に、画面上のサイズを最初に知る必要がある場合です。
Well, looking at the source, there isn't much difference:
public void removeAllViews() {
removeAllViewsInLayout(); // Details implemented here
requestLayout();
invalidate(true);
}
So unless you want to call invalidate()
at a time of your choosing, you might as well use removeAllViews()
and save yourself a bit of typing.
EDIT
For a more detailed explanation, see David Lui's answer. To sum it up, use removeAllViews()
unless you're in the process of constructing a View--in which case you'd call removeAllViewsInLayout()
.