2010-05-25 110 views
1

对于应用程序我需要将某些对象放置在我想要的确切位置,因此我需要使用AbsoluteLayout。运行时动态布局更改

我想动态地添加按钮,就像在下面的XML中一样 - 但是在运行时。

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <Button 
    android:id="@+id/backbutton" 
    android:text="TEST123" 
    android:layout_x="120px" 
    android:layout_y="120px" 
    android:layout_width="100px" 
    android:layout_height="100px" /> 
</AbsoluteLayout> 

我该如何归档?我试着用下面的代码添加一个按钮,但是我还没有找到一个函数来设置layout_x和layout_y。我怎样才能做到这一点?谢谢。

AbsoluteLayout al = new AbsoluteLayout(this); 
Button t = new Button(this); 
t.setHeight(300); 
t.setWidth(300); 
t.setText("TEST123"); 
// x y ??? 
setContentView(al); 

回答

1

当您添加视图的布局,可以提供LayoutParams,这是您指定的布局信息。

但是,AbsoluteLayouts已被弃用,有充分的理由。你将如何处理不同的屏幕尺寸和分辨率?您应该能够使用非弃用布局对象的组合来创建要查找的布局。以developer docs为起点。

如果你更详细地描述你的目标,有人应该能够帮助你选择合适的布局。

+0

好吧,想象一些房间地图,你可以在其中放置设备点击它们来触发一个动作。我想过使用带背景图像的按钮和房间的背景图像。在我看来,除了使用AbsoluteLayout之外没有别的办法,因为我必须在整个时间内处理x/y坐标(在房间中的正确位置)。你会推荐我什么?我刚刚忽略了不同屏幕尺寸的问题,因为它是N1和横向布局的程序。我停止了景观/肖像切换,因为它在程序中造成了问题。 – Nils 2010-05-25 05:06:23

+0

你是说你有背景图片,你需要按钮来排列背景中的东西吗?在那种情况下,可能很难将某些东西放在一些绝对的地方,我认为FrameLayout是这个方法的首选方法。它允许你重叠视图。此外,不知道为什么你只针对N1,只是要记住,只有一小部分Android设备在那里! http://developer.android.com/resources/dashboard/screens.html – 2010-05-25 15:43:46

+0

嗯,实际上我想先绘制这个背景图像(想象一个房间的2D地图,我想用线绘制),然后我想放置一些项目,它们是可点击的图像(按钮?)。目前我正在看看GridView,但我仍然很不确定,这可能是正确的。 – Nils 2010-05-25 18:05:52