0

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

像这样: 在此处输入图像描述

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

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

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

我考虑过的一些探索:

  • 使用布局权重。如果我只对垂直或水平位置感兴趣,这将解决问题,但我看不到如何同时做这两个。

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

  • 我最接近这项工作的是设置 android:translationX 和 android:translationY。原则上,将这些值设置为在 XML 中的参考屏幕上工作(比如 10.1" 平板电脑)并将这些值缩放到实际使用的设备应该是一件简单的事情。我无法通过这种方式获得合理的结果。通过试用-and-error 我发现在 XML 中为 Galaxy 10.1" 选项卡设置原始值并在 Galaxy nexus(横向)上运行时,我必须900 添加到 getTranslationX/Y() 中的值,因此生成的图标正确出现。但是 900 只是一个任意数字,当然添加它们会破坏 10.1" 选项卡上的位置,所以这不是一个解决方案。

XML 或编程解决方案都可以。

4

1 回答 1

0

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

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

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

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

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

            I

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

       I            I

-------------我--------我-----a

像这样等等..(忽略'a's)每个框代表透明图像的一部分。你把你的图标放在“我”或任何你想要的地方

(再次抱歉!!!)

于 2013-12-16T20:37:38.217 回答