私はいくつかのウィジェットをaddViewと、時にはaddViewInLayoutを使って見たことがあります。addViewとaddViewInLayoutの違いは何ですか
これらの違いは何ですか? 1つ置き換えるとどうなりますか?
レイアウト中にフラグを保持し、それに従って「addViewInLayout」または「addView」を使用する必要がありますか?
ありがとうございました。
BR、 ヘンリー
PS。複数のタグを追加する:removeview、
私はいくつかのウィジェットをaddViewと、時にはaddViewInLayoutを使って見たことがあります。addViewとaddViewInLayoutの違いは何ですか
これらの違いは何ですか? 1つ置き換えるとどうなりますか?
レイアウト中にフラグを保持し、それに従って「addViewInLayout」または「addView」を使用する必要がありますか?
ありがとうございました。
BR、 ヘンリー
PS。複数のタグを追加する:removeview、
そのを参照してください。つまり、レイアウトの途中でレイアウトをトリガーすることになります。
addViewInLayout
は、実際にonLayout
に新しいビューを追加する必要がある場合は、addView
の「より安全な」バージョンです。基本的にはレイアウト・パスをトリガーしません(内部でrequestLayoutを呼び出さない)。我々はレイアウト(mLayout)を持っていて、これがあるlayout.soに2つのビュー(VIEW1、VIEW2)を追加したい:例えばhttp://www.youtube.com/watch?v=HbAeTGoKG6k
removeviewinlayout addViewInLayoutは
レイアウト中にビューを追加します。これは、onLayout()メソッドでもっと多くのビューを追加する必要がある場合に便利です(リストビューなど)。 indexが負の場合、それはリストの最後に置くことを意味します。
addView
渡されたビューに渡されたLayoutParamsを割り当て、ウィンドウにビューを追加します。
※addViewは、子ビューをアクティビティに追加したり削除したりするためのインターフェイスであるViewManager
によって実装されているため、実行時にViewGroupにビューを追加することができます(DYNAMICALLY)。また、addViewInLayoutはViewGroupの保護されたメソッドなので、カスタムビューグループを作成する場合は、メソッドでaddViewInLayout()
を呼び出すことができます。
addView
が内部で最終的にonLayout
を呼び出しますrequestLayout
トリガーするため、よりonLayout
内addView
を呼び出すために、一般的に悪い考えをthis
:
詳細について(アンドロイドエンジニアによって)このビデオを参照してください。 2つの方法(同)
ケース1:単にあなたが、この場合、コマンド
mLayout.addView(view1); //onLayout() will be called first time
mLayout.addView(view2); //onLayout() will be called second time after the first time.
次使用は、あなたが機能onLayoutを気にしません()。シンプルなソースコードです。
事例2:私はそれをテストする時間がない複雑なく、より良いパフォーマンス
//do something to <global variable>
bCheck = true; //check it in fuction onLayout()
requestLayout(); //use this function to call onLayout() function for only one time
//in onLayout() function of mLayout, you use addViewInLayout()
//addViewInLayout() dont call onLayout() function, so you can add 2 views with only one time to call onLayout()
//onLayout() is abstract function, so mLayout is a instant of subclass of ViewGroup (ex: RelativeLayout, LinearLayout....)
@Override
onLayout(boolean changed, int l, int t, int r, int b)
if(bCheck == true){
v.addViewInLayout(view1); //add view1 to mLayout
v.addViewInLayout(view1); //add view2 to mLayout
bCheck = false;
}
}
});
。誰でも私がそれをより明確にするのを助けることができます。
ご返信ありがとうございます。 これらはAndroidデベロッパーガイドから単純にコピーされています。 と私は本当に知りたいものではありません。 「実際の」違いは か、「コード」の違いを言うかもしれません。 まだありがとうございます。 – Henry
これは、私は任意のビューグループオブジェクトで呼び出すことができるaddViewを説明し、カスタムビューグループを作成するときにaddViewInLayoutをonLayout()メソッドのフォームと呼びます。 –