如何以编程方式在其中添加FrameLayout和ImageViews?

Kus*_*hal 2 android android-layout

在SO中提出了很多类似的问题,但是也请花点时间阅读我的问题.

我需要以编程方式创建一个具有多个UI的UI ImageView,它们都位于屏幕的不同位置并具有相关的点击事件(它是一个游戏应用程序).我发现这FrameLayout是合适的选择,我可以自己设置边距并将其定位在所需的位置.

现在,我很困惑是否为我创建的FrameLayout每一个单独ImageView创建,或者保持单个FrameLayout并在其中添加所有ImageView,但是将每个imageview设置在不同的位置.

在任何一种情况下,我如何以编程方式在其中添加FrameLayout和ImageView,并设置其边距使其可以放置在屏幕上的任何位置.

请注意,我的主画布,它将携带所有这些ImageViews有背景,画布是一个LinearLayout通过XML设置,所以我onCreate()已经有了setContentView(R.layout.game_canvas);,我将用它addContentView()来添加其他视图,但这个方法也接受LayoutParams对象作为第二个参数那么当我使用这种方法添加FrameLayouts时,我应该为此设置什么?

我的问题可能会令人困惑,所以如果我需要详细说明,请告诉我.

nmw*_*nmw 6

FrameLayouts只能容纳一个View,因此这不是真正合适的选择.

使用RelativeLayout来保存所有ImageView.您可以通过在LayoutParams中设置边距来定位每个ImageView.

例如,以下代码将ImageView放置在坐标50,50处:

RelativeLayout imgLayout = new RelativeLayout(this);

ImageView iv = new ImageView(this);
iv.setImageResource(R.drawable.an_image);

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

lp.setMargins(50, 50, 0, 0);
lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);

imgLayout.addView(iv, lp);
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用其addView()方法将此RelativeLayout添加到主LinearLayout.

  • 是的,他们这样做.订单由您添加的订单决定. (2认同)