【发布时间】:2017-05-24 23:59:48
【问题描述】:
背景
假设我想使用 ImageView 显示某物的图像,并且我想在其顶部放置新视图(例如,在世界地图图像上显示图钉的动画 ImageView,或者在顶部的 Switch 视图智能手机图像)。
这意味着无论 ImageView 如何显示图像,视图都应该在其中,在正确的位置内,与指定的大小相同,或者与 imageView 本身相关的大小
问题
与其他视图不同,ImageView 可以有一定的大小,但它的内容是另一回事(保持纵横比)。
我尝试了什么
我尝试使用 ConstraintLayout,但这无济于事,因为 ImageView 可以改变它的大小(例如在改变方向时),从而破坏了与 ImageView 相比我给出的视图的位置。
我找到了一些可以处理类似事情的库(比如here),我之前什至问过一个类似的问题(here),但是所有这些解决方案都是针对 ImageView 中的静态图像,但是我搜索的是在 ImageView 之上添加一个视图。
问题
如何正确地将视图放在 ImageView 的内容之上?
与 ImageView 内容的大小相比,如何缩小/放大视图?
可以使用 ConstraintLayout 来根据 ImageView 的大小更改视图的比例吗?
【问题讨论】:
-
设置
Switch的布局参数,它们应该是android.widget.FrameLayout.LayoutParams,你会得到映射从getImageMatrix方法返回的矩阵的值 -
我对类似的问题一无所知,我只是给了你一个关于如何布局你的
Switch视图的解决方案,所以它总是覆盖你的ImageView的一部分,不管它有多大和什么scaleType它使用 -
@pskink 遗憾的是,我不明白如何使用您的解决方案,因为您的解决方案缺少代码,我无法在 Internet 上找到它。
-
查看android.googlesource.com/platform/frameworks/base/+/refs/heads/…并找到
mDrawMatrix的使用位置,它应该解释“ImageMatrix”的用途 -
@pskink 你错了,放 ImageView 的源代码与问题无关。打个比方,如果我问你如何为 RecyclerView 设置适配器,你会给出 RecyclerView 的代码。或者,如果我想问如何在 Linux 上显示当前路径的文件列表,你会给我 linux 的代码(甚至比显示“man ls”还要糟糕)。这种类型的答案很糟糕,人们会称之为拖钓。如果你不知道答案,最好避免这样写。