7

addView を使用するウィジェットや、場合によっては addViewInLayout を使用するウィジェットを見てきました。

それらの違いは何ですか?1つを別のものに置き換えるとどうなりますか?

レイアウト中にフラグを保持し、それに応じて「addViewInLayout」または「addView」を使用する必要がありますか?

ありがとう。

BR、ヘンリー

ps。タグを追加: removeview、removeviewinlayout

4

3 に答える 3

4

addViewInLayout

レイアウト中にビューを追加します。これは、onLayout() メソッドでさらにビューを追加する必要がある場合に便利です (たとえば、リスト ビューのように)。index が負の場合、それはリストの最後に置くことを意味します。

addView

渡された LayoutParams を渡された View に割り当て、ビューをウィンドウに追加します。

*addView はViewManager、子ビューをアクティビティに追加および削除できるようにするインターフェイスである によって実装されるため、実行時に (動的に) ビューを ViewGroup に追加できることに注意してください。また、addViewInLayout は ViewGroup の保護されたメソッドであるため、カスタム ビュー グループを作成する場合はaddViewInLayout()onLayout()メソッドで呼び出すことができます。

詳細については、これを参照してください

于 2013-05-07T04:54:57.310 に答える
1

例: レイアウト (mLayout) があり、このレイアウトに 2 つのビュー (view1、view2) を追加したい場合、2 つの方法 (同じ) があります。

case1: 次のコマンドを使用するだけです

mLayout.addView(view1); //onLayout() will be called first time
mLayout.addView(view2); //onLayout() will be called second time after the first time.

この場合、関数 onLayout() は気にしません。簡単なソースコードです。

case2: 複雑だがパフォーマンスは向上

    //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;
            }

        }
    });

テストする時間がありません。誰でも私がそれをより明確にするのを助けることができます。

于 2015-01-13T17:30:38.807 に答える