什么是android:layout_gravity ="clip_vertical"

Min*_*amy 12 android

该属性android:layout_gravity="clip_vertical|horizontal"执行SDK文档中提到的以下内容:

可以设置为将子项的顶部和/或底部边缘剪切到其容器边界的附加选项.剪辑将基于垂直重力:顶部重力将剪切底部边缘,底部重力将剪切顶部边缘,并且两者都不会剪切两个边缘.

但我在我的应用程序中看不到任何相关内容,

那么这个属性的目的究竟是什么?

谢谢

Lor*_*rte 20

精简版:

clip_horizo​​ntal和clip_vertical适用于视图本身的测量,然后呈现任何内容(例如BitmapDrawable中的图像).


长版:

我在clip_horizo​​ntal和clip_vertical上遇到了类似的混淆.(在我的例子中,它与android:gravity相关的BitmapDrawable,但它足够类似于适用.)

从文档中我认为位图上的android:gravity ="top | left | clip_vertical"会导致图像的左上角位于视图的左上角,如果位图高于视图,它将被"剪裁"在视图的底部边缘.换句话说,只显示视图足够高以显示的位图; 不要拉伸位图,而只显示适合的任何内容,让其余部分延伸到底边下方.

然而,恰恰相反:当我设置clip_vertical时,一个大的位图被垂直压扁以适应视图的高度.

在检查了platform/frameworks/core/java/android/view/Gravity.java中的applyDisplay()方法后,我意识到自己的错误:

它不是要剪裁的位图图像,而是视图 - 图像最终渲染到的容器的实际大小.

在我的情况下设置clip_vertical并不意味着"剪切底部边缘的图像",这意味着"剪切BitmapDrawable的视图本身,使其高度与其父容器的高度匹配"......然后导致图像被"压扁" "因为它填补了较短的高度.

因此,重要的是要记住android:gravity和android:layout_gravity是clip_horizo​​ntal和clip_vertical应用于视图本身的测量,然后呈现任何内容(例如我的BitmapDrawable).