【发布时间】:2016-04-20 15:31:11
【问题描述】:
我对 ImageView 有奇怪的行为(比例类型 = 矩阵)。
我有一些父视图(实际上是 FrameLayout,在图片上标记为灰色)。在这个 FrameLayout 的顶部,我的 ImageView 位于 MATCH_PARENT 属性中。
所以我希望 ImageView 应该填充父视图。我在 ImageView 中设置了不同大小的位图(使用 MATRIX ScaleType)。有时它比 ParentView 小,有时比 ParentView 大。我想使用 imageView.setScaleY(scaleFactor) 将位图调整为父边界,如果 scaleFactor > 1,它完全可以工作。但是如果 Bitmap 实际上更大并且 scaleFactor
看起来 ImageView 的大小是通过 Bitmap 缩小的,我无法通过使用 imageView.setMinimumWidth/Height 或 LayoutParams 来阻止它。
有什么想法吗?
附:我无法使用矩阵变换缩放 ImageView(因为它在我的应用中用于不同目的 - 缩放/移动/旋转)
【问题讨论】:
-
我认为你的 ImageView 在那里,你只是看不到它。尝试为 ImageView 分配背景颜色,或者更好的是,将 x&y 转换添加到矩阵,即
matrix.postTranslate(x,y)。您应该能够看到 ImageView 使用了整个区域。 -
x&y 翻译只是在 ImageView“窗口”中移动我的位图。但 ImageView getWidth() 返回正确的值(与父视图相同)。它有什么帮助?
-
哦,我明白了。您可能在想,如果位图更大,那么您需要进一步缩小它。事实证明,ImageView 会调整位图的大小以适应,然后变成 scale == 1。因此,无论您使用什么大小的位图,缩放都会得到相同的结果。
-
所以当我放大一个小位图时 - 它会变大并且 ImageView 会调整位图边框(填充上图中的灰色区域)。当位图大于该灰色区域时 - ImageView 无法调整位图(因为 MATCH_PARENT 属性)。调用 setScaleX() 后,ImageView 缩小(到红色区域边框)+ 位图缩小到灰色区域。这是正确的吗?我只是无法理解 ImageView 的渲染顺序。位图调整为 ImageView 还是反之?
标签: android matrix imageview scaletype