[英]How to position a View at an specific point on a background layer, regardless of screen dimentions?
我想将视图集合放置在图像背景上的预定义位置。
像这样:
我可以使用顶部/左侧边距或android:TranslationX / android:TranslationY以XML格式设置每个咖啡杯视图的位置。
当应用程序在具有不同尺寸的屏幕上启动时,我的背景层将拉伸到新的布局,但是如何更改视图的上/下边距?
理想情况下,我只需要在XML中将每个视图的位置标记为父视图左侧的x%和父视图顶部的y%。 (动画可以像这样工作)。 该选项似乎不可用。
我考虑过的一些探索:
使用布局加权。 如果我只对垂直或水平位置感兴趣,那么这将解决问题,但是我看不到如何同时进行这两个操作。
设计特定的参考屏幕尺寸,使用边距定位杯子,然后在运行时缩放视图的顶部/左侧边距。 这涉及在运行时读取起始页边距,并将其重置为参考屏幕的一部分。 如果我的参考屏幕为1000px宽,并且我正在750px宽的屏幕上运行,则可以读取layoutParams,将左边距乘以(750/1000),然后将得到的左边距写回布局。 但是getLayoutParams没有给我一个有边距的对象。
我最接近实现此功能的是设置android:translationX和android:translationY。 原则上,将这些值设置为可在XML(例如10.1“平板电脑)的参考屏幕上工作并将它们缩放到实际使用的设备应该是一个简单的问题。我无法通过这种方式获得明智的结果。 -and-error我发现在XML中为Galaxy 10.1“选项卡设置了原始值,并且在Galaxy nexus(横向)上运行时,我必须将 900 添加到getTranslationX / Y()的值中,因此生成的图标正确显示。 但是900只是一个任意数字,当然,加上900会弄乱10.1“选项卡上的位置,因此这不是解决方案。
XML或程序解决方案都可以。
使用相对布局,您可以相对地将图标放置在想要的位置。
您可以创建透明图像,将其切成地图对应的位置,然后使用相对布局将其放置在此处。
这可能是一个愚蠢的解决方案……但这对我有用。
由于我无法放置图片,因此我将尝试用字符解释它们。 (抱歉!!!)
- - - - - - - - - - - - - - - - - - - - 一种
I
-------------------- I ------------------- a
I I
------------- I -------------------- I ----- a
像这样等等。(忽略'a')每个框代表透明图像的一个切片。 您可以将图标放在“我的”或任意位置
(再次抱歉!!!)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.