Additional option that can be set to
have the top and/or bottom edges of
the child clipped to its container’s
bounds. The clip will be based on the
vertical gravity: a top gravity will
clip the bottom edge,a bottom gravity
will clip the top edge,and neither
will clip both edges.
但我的应用程序中看不到任何内容
那么这个属性的目的是什么呢?
谢谢
解决方法
在渲染任何内容(例如BitmapDrawable中的图像)之前,clip_horizontal和clip_vertical应用于视图本身的度量.
长版本:
我在clip_horizontal和clip_vertical中遇到了类似的混乱. (在我的情况下,它是与Android的重力相关的BitmapDrawable,但它是足够相似的适用.)
从文档中我觉得像位图之类的东西就像是android:gravity =“top | left | clip_vertical”,会导致图像的左上角位于视图的左上角,如果位图比视图高,它将被“剪切”在视图的底部边缘.换句话说,只显示视图足够高以显示的位图;不要拉伸位图,而是只显示任何适合的位置,让其余的延伸到底边.
然而,恰恰相反,当我设置clip_vertical时,一个大的位图被垂直压缩以适应视图的高度.
在平台/ frameworks / core / java / android / view / Gravity.java中检查了applyDisplay()方法后,我意识到我的错误:
它不是要被剪切的位图图像,而是视图 – 图像最终呈现的容器的实际大小.
在我的情况下设置clip_vertical并不意味着“将图像剪切在底部边缘”,这意味着“剪切BitmapDrawable的视图本身,因此它的高度与其父容器的高度相匹配”,然后导致图像被“压缩” “因为它填满了较短的高度.
所以,重要的事情要记住与android:gravity和android:layout_gravity是clip_horizontal和clip_vertical应用于视图本身的测量,在任何内容(如我的BitmapDrawable)呈现之前.