2016-01-23 42 views
0

在一个特殊的android应用程序中,如果整个或部分父项溢出父窗口(窗口焦点已更改),我想从父项中删除所有子视图。删除所有的父项溢出的子项

我已经尝试编写有关儿童和父宽度的手动计算,但我正在寻找一种面向对象的解决方案,以适用于各种视图。

回答

0

这可能是最简单的方法,只需扩展您正在使用的ViewGroup并在布置布局后删除视图。 (ViewGroups包括LinearLayoutRelativeLayout,...)

通过覆盖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后处理事情。

相关问题