我一直在尝试将视图放在任意位置。
我的目标:要覆盖JPG / PNG的某个矩形,给定与JPG / PNG 相关的坐标,以及其他一些视图,例如,图库,或者一些视频。
我不想使用AbsoluteLayout,因为它已被删除。
因此,我使用RelativeLayout,将虚拟文本框定义为占位符,并将我的视图RIGHT_TO和BELOW放在文本框中。
+--------+
|TextView|
| | (x,y)
+--------+-----------------------+
| |
| My View |
| |
+-----------------------+
我的问题是:有更健壮,更优雅的方式吗?
上面提到的问题是,它非常脆弱:需要为每个新屏幕重新计算坐标。我的观点覆盖了以下内容。它需要准确放置,这很难做到。
所以我想找到一个更好的方法来做到这一点。
Thanks
M.
答案 0 :(得分:2)
不完全理解你在做什么,看起来你正在通过使用RelativeLayout为自己做额外的工作。你想要在屏幕上放置的东西与任何东西都不相关,它基于图像中的特定坐标,所以即使你使用其他布局之一,你仍然基本上放置一些绝对坐标。
至于AbsoluteLayout被弃用,从我所看到的仅仅是为了阻止它的使用,因为它与可变屏幕尺寸有关。他们无意实际删除它,即使他们这样做,你也可以获得源代码并将其编译到你的项目中。
答案 1 :(得分:2)
解决方案非常难看,它不是相对的,但有些人可能会说这似乎是合理的:
将FrameLayout添加为容器(而不是下面提到的RelativeLayout)。要显示的视图是该FrameLayout的子视图。 要将其放置到位,请添加填充。
void addViewInAnArbitraryRect( Rect rect,
Context context,
View subjectView,
View parent ) {
FrameLayout container = new FrameLayout( context );
parent.addView( container );
container.setPadding( rect.left,
rect.top,
container.getWidth() - rect.right,
container.getHeight() - rect.bottom );
container.addView( subjectView );
}
注意:您可能需要将页面坐标调整为屏幕上的坐标。记住:
我希望它有所帮助。
Meymann