0
在一个特殊的android应用程序中,如果整个或部分父项溢出父窗口(窗口焦点已更改),我想从父项中删除所有子视图。删除所有的父项溢出的子项
我已经尝试编写有关儿童和父宽度的手动计算,但我正在寻找一种面向对象的解决方案,以适用于各种视图。
在一个特殊的android应用程序中,如果整个或部分父项溢出父窗口(窗口焦点已更改),我想从父项中删除所有子视图。删除所有的父项溢出的子项
我已经尝试编写有关儿童和父宽度的手动计算,但我正在寻找一种面向对象的解决方案,以适用于各种视图。
这可能是最简单的方法,只需扩展您正在使用的ViewGroup
并在布置布局后删除视图。 (ViewGroups包括LinearLayout
,RelativeLayout
,...)
通过覆盖onLayout
你可以遍历你的孩子和他们的父母之内删除与边界的任何意见并不。
注意事项:这可能会触发另一个布局调用,所以一定要妥善处理。
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
// call super to layout children and have their bounds set
super.onLayout(changed, left, top, right, bottom);
// Iterate over all children
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if (child.getLeft() < left
// ... add top/bottom
|| child.getRight() > right) {
removeView(child);
}
}
}
如果你想处理事情不延长ViewGroup
你总是可以通过使用相同原理的观点得到了layouted后处理事情。