na przykład: mamy układ (mLayout) i chcesz dodać 2 widoki (View1, View2) do tego layout.so istnieją 2 sposoby (samo)
Przypadek 1: wystarczy użyć poniższy polecenia
mLayout.addView(view1); //onLayout() will be called first time
mLayout.addView(view2); //onLayout() will be called second time after the first time.
w tym przypadku, nie obchodzi funkcji onLayout(). to jest prosty kod źródłowy.
Przypadek 2: komplikować ale lepsze osiągi
//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;
}
}
});
nie mam czasu, aby go przetestować. każdy może mi pomóc uczynić go bardziej zrozumiałym.
dzięki za odpowiedź. , ale są one po prostu kopiowane z przewodnika dla programistów Androida. i nie to, co naprawdę chcę wiedzieć. to, o co pytam, to "prawdziwa" różnica, , albo możesz powiedzieć różnicę w "kodzie". nadal dziękuję. – Henry
To jest to, co wyjaśniłem addView można wywołać w dowolnym obiekcie grupy view AND addViewInLayout musi być wywołana metoda onLayout(), gdy tworzysz niestandardową grupę widoków. –