Android布局:正方形视图

7
在一个Android应用程序中,我需要向我的RelativeLayout添加一个视图,该视图遵循以下规则:
  1. 视图应为正方形,即视图的高度和宽度必须相等。
  2. 视图应填充整个宽度。
它应该看起来像这样(正方形应在垂直方向上居中):
+-------------+
|  activity   |
|             |
|+-----------+|
||           ||
||  square   ||
||           ||
||           ||
|+-----------+|
|             |
|             |
+-------------+

最终我希望有一个显示正方形图片的ImageView。目前,我通过将视图的宽度和高度都设置为FILL_PARENT,并让ImageView正确地绘制图片(使用scaleType=centerInside)来实现这一点。
但是:现在我想要一个额外的视图,它与正方形视图的顶部对齐,这就是我的方法失败的地方。如果我现在将视图的宽度设置为FILL_PARENT,高度设置为WRAP_CONTENT,那么图片将不再适合整个宽度。
你有解决这个问题的方法吗?如果可能的话,最好只用编写XML来完成。
提前致谢!
3个回答

4

1
好的,似乎仅使用XML不可能实现,但可以创建自定义布局。我使用了那里描述的SquareLayout,简化了onMeasure方法,它完美地工作。尽管如此,我认为仅基于当前布局管理器的解决方案应该更好,但不幸的是,似乎像我的一些用例不受支持...感谢您的帮助! - mreichelt
是的,我非常确定用Java编写布局是唯一的方法。但至少现在你已经定义了SquareLayout,可以在XML中多次重复使用它。 - Nick

0

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>

不,这样行不通。在你的情况下,ImageView将会根据图像的大小进行包裹 - 这应该是向上缩放的。此外,我可以很好地在我的RelativeLayout中对齐视图 - 我只需要ImageView具有正确的大小(宽度=高度=活动的宽度)。 - mreichelt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接