如果我有一个包含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) { ... }
答案 0 :(得分: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();
}