我有ImageView
,如果重要的话,它会占据整个屏幕,我打算用TextView
s在其上放置几个标签。我需要这些标签对应图像上的精确位置。
我尝试在xml中设置边距,但由于dp
无法在设备之间进行转换,因此无法正常工作。我知道我可以以编程方式将位置设置为屏幕大小的百分比,但这会带来一些问题:
正在保持图像的宽高比,因此在大多数屏幕上会有一点白色空间,因为屏幕与图像的形状不同。此外,该应用程序不是全屏,因此通知栏占用空间。此空白区域和通知栏的空间使得屏幕的百分比与图像的百分比不同。
如何将TextView
定位在ImageView
上,使其与每个设备上的相同位置(相对于图像)完全相同?
答案 0 :(得分:0)
我最终自己搞清楚了:
text.setX((int) (img.getX()+(img.getWidth()*pct)/100)
和y相同,其中text
是TextView,img
是ImageView,pct
是图像的百分比。另一个问题是,这不能在onCreate()
中调用。我在onWindowFocusChanged()
中调用了它。
为了防止ImageView与Image形成不同的形状,这会破坏此解决方案,您可以这样做:
android:adjustViewBounds="true"
并确保将至少一个维度设置为wrap_content
。