【问题标题】:Android layout: Quadratic viewsAndroid 布局:二次视图
【发布时间】:2011-03-16 16:33:48
【问题描述】:

在 Android 应用程序中,我需要向我的 RelativeLayout 添加一个遵守以下规则的视图:

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

它应该看起来像这样(正方形应该垂直居中):

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

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

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

你有解决这个问题的方法吗?如果可能的话,最好仅通过编写 XML 来完成。

提前致谢!

【问题讨论】:

    标签: android xml user-interface android-layout


    【解决方案1】:

    查看此问题的最佳答案。

    Android layout with square buttons

    【讨论】:

    • 好的,所以似乎不能仅使用 XML,而是创建自定义布局。我使用了那里描述的 SquareLayout,简化了 onMeasure 方法,它工作得很好。我仍然认为仅基于当前布局管理器的解决方案应该会更好,但不幸的是,像我这样的一些用例似乎不受支持...谢谢您的帮助!
    • 是的,我很确定用 Java 编写布局是唯一的方法。但至少现在您已经定义了 SquareLayout,您可以在 XML 中根据需要多次重复使用它。
    【解决方案2】:

    如果您希望两个视图彼此相邻,则任何一个视图都不能有 FILL_PARENT。听起来您需要的是一个包含 ImageView 和其他视图的水平 LinearLayout。然后在 ImageView 上设置 android:layout_weight="1" 和 android:layout_width="0dp",这将使 ImageView 填充父级。然后将另一个View的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 具有正确的大小(宽度 = 高度 = 活动宽度)。
    【解决方案3】:

    我创建了一个 LinearLayout 扩展,它完全符合您的要求。为方便起见,我将它封装在一个 Android 库项目中。 见https://github.com/ronaldsteen/Android-SquareLayout-Library

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多