【问题标题】:Is there another way to evenly space views other than using LinearLayouts and layout_weight?除了使用 LinearLayouts 和 layout_weight 之外,还有其他方法可以均匀分布视图吗?
【发布时间】:2012-05-26 15:54:39
【问题描述】:

现在我在另一个具有相同属性的视图中拥有带有 layout_weight 的视图,这导致外部视图以指数方式计算。我正在考虑在内部视图中嵌套另一组具有权重的视图,但这会导致最外层视图的计算次数超出我的预期。我只是将区域均匀地分开(组中的每个视图都具有相同的权重),但我希望所有内容都能正确缩放,无论屏幕的大小或 DPI 是多少。有没有其他方法可以在另一个视图中有效地拆分视图?

【问题讨论】:

  • 使用layout_weight 通常是最好的方法。如果您没有看到您想要的布局,那么您似乎在错误的地方使用了layout_weight 或使用了错误的“权重”值。发布您的布局 XML 并说明您希望布局的外观。
  • 我认为我对类似主题的回答会有所帮助:stackoverflow.com/questions/10539268/…
  • 注意,这仅适用于均分布局。你可以通过嵌套越来越多的布局来做到这一点,但在某些时候它比只使用 layout_weight 更好。
  • @DeeV 看起来它可以工作。我确实喜欢你建议的只是把警告搞砸的方式,我自己也这么认为,但每当在测量或计算方面提到“指数增加”这个短语时,我就会有点怀疑。
  • 如果你在布局内布局内布局内布局全部使用嵌套权重,它可能会“成倍增加”。如果加载布局需要半秒钟,那么您可能需要重新考虑设计或布局方式。但是,lint 警告经常出现,以至于 90% 的警告都无关紧要。不过,在它成为问题之前,您实际上并不需要处理它。

标签: android


【解决方案1】:

DeeV 对this question 的回答做得很好:

将您的顶部LinearLayout 替换为RelativeLayout 并将两个孩子对齐到中心的>不可见View,如下所示:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/top"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
      android:id="@+id/center_point"
      android:layout_width="0dp"
      android:layout_height="0dp"
      android:layout_centerInParent="true"/>

    <LinearLayout
      android:id="@+id/left_layout"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_alignParentLeft="true"
      android:layout_alignRight="@+id/center_point>
    </Linearlayout>


    <LinearLayout
      android:id="@+id/right_layout"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_alignParentRight="true"
      android:layout_alignLeft="@+id/center_point>
    </Linearlayout>

</RelativeLayout>

【讨论】:

    猜你喜欢
    • 2018-03-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    • 2019-09-14
    • 2017-07-18
    • 2018-04-21
    相关资源
    最近更新 更多