2011-03-16 55 views
7

在一个Android应用程序,我需要一个视图添加到我的RelativeLayout是遵循以下规则:Android的布局:二次意见

  1. 的观点应该是二次,即高度和角度的宽度必须匹配。
  2. 视图应填充整个WIDTH。

它应该是这样的(方应垂直居中):

+-------------+ 
| activity | 
|    | 
|+-----------+| 
||   || 
|| square || 
||   || 
||   || 
|+-----------+| 
|    | 
|    | 
+-------------+ 

最后,我想有一个显示的二次图像的ImageView的。目前我通过将视图的宽度和高度都设置为FILL_PARENT来完成此操作,并让ImageView正确绘制图像(使用scaleType = centerInside)。

但是:现在我想要有一个额外的视图与方形视图的顶部对齐,这是我的方法失败的地方。 如果我现在将视图的宽度设置为FILL_PARENT,并将其高度设置为WRAP_CONTENT,则图像将不再适合整个宽度。

你有解决这个问题的办法吗?如果可能的话,这可以通过编写XML来完成,这将是可取的。

提前致谢!

回答

4

看看这个问题的最佳答案。

Android layout with square buttons

+1

好吧,所以它似乎不可能只是使用XML,但创建自定义布局。我使用了那里描述的SquareLayout,简化了onMeasure方法,并且它完美地工作。不过,我认为基于当前布局管理器的解决方案应该更好,但不幸的是,似乎不支持像我这样的用例...感谢您的帮助! – mreichelt 2011-03-16 18:52:28

+0

是的,我很确定在Java中编写布局是唯一的方法。但至少现在你已经定义了SquareLayout,你可以根据需要多次在你的XML中重用它。 – Nick 2011-03-17 16:48:05

0

如果你希望两个视图彼此相邻,那么任何一个都不能有FILL_PARENT。听起来像你需要的是一个包含ImageView和其他视图的水平LinearLayout。然后在ImageView上设置android:layout_weight="1"android:layout_width="0dp",这将使ImageView填充父项。然后将另一个视图的layout_width设置为“wrap_content”。

<LinearLayout android:width="FILL_PARENT" android:height="WRAP_CONTENT"> 
    <ImageView android:layout_height="WRAP_CONTENT" android:layout_width="0dp" android:layout_weight="1" /> 
    <OtherView android:layout_height="WRAP_CONTENT" android:layout_width="WRAP_CONTENT" /> 
</LinearLayout> 
+0

不,这不起作用。在你的情况下,ImageView将包装到图像的大小 - 应该向上放大。此外,我可以很好地对齐RelativeLayout中的视图 - 我只需要ImageView具有正确的大小(width = height = activity的宽度)。 – mreichelt 2011-03-16 16:42:47