什么是android:layout_gravity =“clip_vertical”

时间:2010-11-16 19:21:05

标签: android

属性android:layout_gravity="clip_vertical|horizontal"按照 SDK 文档中的说明执行以下操作:

  

可以设置为的附加选项   有顶部和/或底部边缘   孩子夹在容器上   界限。剪辑将基于   垂直重力:顶部重力会   夹住底部边缘,底部重力   将夹住顶边,而不是   将裁剪两条边。

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

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

感谢

3 个答案:

答案 0 :(得分:20)

简短版本:

在呈现任何内容(例如BitmapDrawable中的图像)之前,

clip_horizo​​ntal和clip_vertical适用于视图本身的测量值。


长版:

我在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()方法后,我意识到自己的错误:

不是要剪裁的位图图像,而是视图 - 图像最终渲染到的容器的实际大小。< / p>

在我的情况下设置clip_vertical并不意味着“剪切底部边缘的图像”,这意味着“剪切BitmapDrawable的视图本身,使其高度与其父容器的高度匹配”......然后导致图像当它填满那么短的高度时,“被压扁”。

因此,重要的是要记住android:gravity和android:layout_gravity,在渲染任何内容(例如我的BitmapDrawable)之前,clip_horizo​​ntal和clip_vertical适用于视图本身的测量

答案 1 :(得分:0)

可能没有效果,因为horizontal中未定义clip_vertical。 {{1}}只是一个附加属性,除了基本属性外还可以使用。

答案 2 :(得分:0)

标记以沿水平轴将对象的边缘剪切到其容器中。

check this