ví dụ: chúng tôi có một Layout (mLayout) và bạn muốn thêm 2 views (view1, View2) vào này layout.so có 2 cách (giống nhau)
hợp 1: chỉ cần bạn sử dụng lệnh
mLayout.addView(view1); //onLayout() will be called first time
mLayout.addView(view2); //onLayout() will be called second time after the first time.
trong trường hợp này như sau, bạn không quan tâm chức năng onLayout(). nó là mã nguồn đơn giản.
Trường hợp2: phức tạp nhưng hiệu suất tốt hơn
//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;
}
}
});
Tôi không có thời gian để kiểm tra nó. bất cứ ai cũng có thể giúp tôi làm rõ hơn.
cảm ơn câu trả lời của bạn. nhưng chúng chỉ được sao chép từ hướng dẫn của nhà phát triển Android. và không phải những gì tôi thực sự muốn biết. điều tôi đang hỏi là sự khác biệt "thực sự", hoặc bạn có thể nói sự khác biệt trong "mã". vẫn cảm ơn. – Henry
Đó là những gì tôi giải thích addView có thể được gọi trong bất kỳ đối tượng viewgroup VÀ addViewInLayout phải được gọi là hình thức onLayout() phương pháp khi bạn tạo một nhóm xem tùy chỉnh. –