无论屏幕尺寸如何,如何将视图定位在背景图层上的特定点?

时间:2012-08-18 03:39:31

标签: android layout view position overlay

我想在图像背景上的预定义位置放置一组视图。

像这样: enter image description here

我可以使用顶部/左边距或android:TranslationX / android:TranslationY设置每个咖啡杯的位置,使用XML:TranslationX。

当应用程序在具有不同尺寸的屏幕上启动时,我的背景图层将延伸到新布局,但如何更改我的视图的上/左边距?

理想情况下,我只是在XML中将每个视图的位置标记为左边的x%和父节点顶部的y%。 (动画可以像这样工作)。该选项似乎不可用。

我考虑过的一些探索:

  • 使用布局权重。如果我只对垂直或水平位置感兴趣,这可以解决问题,但我无法看到如何同时执行这两项操作。< / p>

  • 设计特定的参考屏幕尺寸,使用边距定位杯子,然后在运行时缩放视图的上/左边距。这涉及在运行时读取起始边距并将其重置为参考屏幕的一部分。如果我的参考屏幕是1000px宽并且我在750px宽屏幕上运行,我可以读取layoutParams,将左边距乘以(750/1000)并将得到的左边距写回布局。但是getLayoutParams并没有给我一个有边距的对象。

  • 最接近我的工作是使用设置android:translationX和android:translationY。原则上,设置这些值应该是一个简单的问题XML中的参考屏幕(比如一个10.1英寸的平板电脑)并将它们缩放到正在使用的实际设备。我无法通过这种方式得到明智的结果。通过反复试验,我发现在XML中设置了原始值一个Galaxy 10.1“选项卡,并在Galaxy nexus(横向)上运行,我必须 900添加到getTranslationX / Y()的值,以便生成的图标正确显示。但900只是一个任意数字,当然加上它们搞砸了10.1“标签上的位置,所以它不是解决方案。

XML或程序化解决方案都可以。

1 个答案:

答案 0 :(得分:0)

使用相对布局,您可以将图标相对放置在您希望的位置。

您可以创建透明图像,将它们切片到地图对应的位置,然后使用相对布局将它们放在那里。

这可能是一个愚蠢的解决方案...... 但它对我有用。

由于我无法放置图像,我会尝试用字符来解释它们。 (对不起!!!)

----------------------------------------一个

            I

--------------------我-------------------一个

       I            I

-------------我--------------------我-----一

喜欢那样等......(忽略'a') 每个框表示透明图像的切片。 您将图标放在“我或您想要的任何地方”

(再次抱歉!!!)