1

如果我有一个包含 ImageViews 的 LinearLayout,我如何编写代码来判断哪个(如果有)被屏幕边缘裁剪?

<LinearLayout android:id="@+id/imagecontainer"
              android:orientation="horizontal"
              android:layoutHeight="wrap_content"
              android:layoutWidth="fill_parent">

    <ImageView android:id="@+id/image1" .../>
    <ImageView android:id="@+id/image2" .../>

     ...

    <ImageView android:id="@+id/imageN" .../>

</LinearLayout>

我想像这样的东西,如果没有人被剪裁,它将返回一个索引或 0。函数调用的语义并不重要......我只需要一些方法来判断是否有剪辑,如果有,是谁?

int whichImageIsClipped(LinearLayout root) { ... }
4

1 回答 1

5

这可能有点牵强,但您可以在每个孩子身上尝试getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point) 。如果它返回 false,您就知道它完全不在视野范围内。如果返回 true,则需要将返回的 Rect 与图像的预期大小进行比较。

这对你的需要有用吗?

这是代码,以防有人需要它:

public static Boolean isViewClipped(View view) {
  Rect rect = new Rect();
  Boolean completelyObscured = !view.getGlobalVisibleRect(rect);
  return completelyObscured || rect.width() < view.getWidth();
}
于 2011-06-12T00:01:48.980 回答