2010-08-21 65 views
38

如果AbsoluteLayout已被弃用,我可以使用什么来代替它?替代Android中的AbsoluteLayout?

我已经完成了一个使用AbsoluteLayout的应用程序,但它不适用于不同的屏幕分辨率。我使用,因为我可以设置按钮的X和Y位置。我可以使用其他布局设置按钮的位置吗?

+3

你会更好地描述你正在努力实现的目标。部分原因'AbsoluteLayout'已被弃用,因为它不能很好地支持多种屏幕尺寸。对'AbsoluteLayout'(例如,带有页边距的'FrameLayout')的任何直接推论都会遇到同样的问题。你应该从寻找其他解决方案开始,解决你的问题,这些解决方案可以在各种设备上更好地工作。 – CommonsWare 2010-08-22 00:06:02

+0

谢谢。我已经添加了一些信息。 – JoeyCK 2010-08-22 12:08:03

+0

我刚刚发布了一个本来对OP感兴趣的库:https://github.com/ManuelPeinado/ImageLayout – Manuel 2013-04-18 06:35:28

回答

20

可以使用RelativeLayouts如下所述:Set the absolute position of a view

+2

RelativeLayout的一个大问题是,如果你嵌套它们,OnMeasure的调用次数会增加一倍每一步。所以如果你需要一个深层次的结构,这不是一个好的答案。 – 2015-01-06 19:41:56

+0

@WilliamJockusch我自己发现了这个难题。解决方案(最好的)是在任何可能的情况下(通常是)使用LinearLayout,并将RelativeLayouts嵌套在LinearLayouts中。我有一个表格视图,我使用嵌套的RelativeLayouts进行相对布局 - 只将顶视图更改为LinearLayout,我得到了正常的执行时间。我会推测你可以通过在其中创建一个带有RelativeLayout的LinearLayout来破解“AbsoluteLayout”,但是它的声音很糟糕。 – user1122069 2016-03-30 10:56:01

0

我只想用一个相对布局,并根据关闭屏幕的其他项目/边缘的设置。否则你的布局在不同的设备上显示不同。左

+0

我正在做一个图形,我必须将文本视图放在静态图像上的精确位置。我认为唯一的方法是(实际上如果不是技术上)绝对布局。然后,我可以做各种各样的水桶,但因为我期待与它的屁股疼痛。 – 2013-07-24 23:48:17

10

使用的RelativeLayout和组,右页边距像

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
lp.leftMargin = x; 
lp.topMargin = y; 
5

考虑使用FrameLayout。如果您将您的孩子重力设置为TOP|LEFT,则可以使用leftMargintopMargin作为位置。作为奖励,您可以通过改变重力来获得其他一些有用的定位机制。

1

我会建议你们,如果你想完全控制你的视图在屏幕上的位置只是为了扩展ViewGroup并使你自己实现AbsoluteLayout。最简单的解决方案将是使用现有布局之一并使用边距,填充,重力等,但控制不会如此强大,并且可能会在diff设备屏幕上花费一些问题。