我想在图像背景上的预定义位置放置一组视图。
像这样:
我可以使用顶部/左边距或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或程序化解决方案都可以。
答案 0 :(得分:0)
使用相对布局,您可以将图标相对放置在您希望的位置。
您可以创建透明图像,将它们切片到地图对应的位置,然后使用相对布局将它们放在那里。
这可能是一个愚蠢的解决方案...... 但它对我有用。
由于我无法放置图像,我会尝试用字符来解释它们。 (对不起!!!)
----------------------------------------一个
I
--------------------我-------------------一个
I I
-------------我--------------------我-----一
喜欢那样等......(忽略'a') 每个框表示透明图像的切片。 您将图标放在“我或您想要的任何地方”
上(再次抱歉!!!)