如图:
现在想做到添加子view以后,父布局不会回到最开始的状态,请问各路大神有什么好方法吗?
父view是一个自定义控件,加入了边界检测,可以上下左右拖动
子view就是一个桌子,通过调用父布局的addview加入到父布局中
遇到这个问题的时候去查过源码,源码中addview(View view)最后会调用
public void addView(View child, int index, LayoutParams params) {
if (DBG) {
System.out.println(this + " addView");
}
if (child == null) {
throw new IllegalArgumentException("Cannot add a null child view to a ViewGroup");
}
// addViewInner() will call child.requestLayout() when setting the new LayoutParams
// therefore, we call requestLayout() on ourselves before, so that the child's request
// will be blocked at our level
requestLayout();
invalidate(true);
addViewInner(child, index, params, false);
}
这个方法最后会调用requestLayout()和invalidate(true)
我判断就是因为调用了这两个方法,所以导致父布局回到最开始的状态了。
各路大神有没有不调用addview把子布局添加进去,或者能避免requestLayout()和invalidate(true)的影响
不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊 不胜感激啊