【问题标题】:How do I make a layout occupy 1/2 the screen?如何让布局占据屏幕的 1/2?
【发布时间】:2012-05-19 10:48:54
【问题描述】:

我很好奇如果我想让布局占据屏幕右侧,而不管屏幕大小,我需要做什么。

我是否必须在左侧放置一些权重为 1 的空元素?或者是否可以仅指定布局与其父级的右侧对齐并占据一定百分比?如果是这样……怎么办?理想情况下,父级是RelativeLayout,但我会使用任何可行的解决方案,因为目前我尝试过的一切都会导致完全错误的结果。

【问题讨论】:

    标签: android layout


    【解决方案1】:

    据我所知,唯一的解决方案是使用加权 LinearLayout。视图的权重除以布局的 weightSum 表示屏幕上 可用空间 的百分比。

    你可以让它有两个子视图,每个宽度设置为 0dp,权重设置为 1。

    加权布局分两个阶段工作:第一阶段测量每个视图的layout_width。第二阶段分配与 layout_weight / weightSum 关系有关的任何剩余空间(总布局宽度 - 每个视图宽度的累积总和)。

    【讨论】:

    • 等等,你是说我应该将layout_width设置为0dp,它仍然会占用屏幕空间??但除此之外,如果父级的 weightSum 为 2,我会在左侧放置一个空布局,在右侧放置我的预期布局,并给它们每个权重 1,对吧?
    • @Dr.Dredel:确实,因为权重会影响视图的宽度。事实上,如果你将宽度设置为 0dp 以外的值,你将不会得到一半的屏幕空间,只有一半的可用空间(屏幕空间减去所述宽度)。
    • 好吧,我完全糊涂了。假设屏幕总共有 100 个,我将左侧设置为 0dp 并将其权重设置为 1,(逻辑上)可用空间*仍然不是 100dp,因为左侧实际上没有使用任何空间......我认为我在这里遗漏了一些非常基本的东西。
    • @Dr.Dredel:你说的很对。加权布局分两个阶段工作。第一阶段测量每个视图的layout_width。第二阶段分配关于layout_weight/weightSum关系的任何剩余空间(总布局宽度-每个视图宽度的累积总和)。
    • 我明白了......所以,一旦它发现两个视图都没有占用任何空间,它就会给它们每个 1/2 的可用空间......非常有趣。
    【解决方案2】:

    要使元素与任何一侧对齐,您应该设置它的父元素(可能是包含该元素的布局)的重力。当然,在您的情况下,将线性布局的 "gravity" 属性设置为 right。您可能还需要将布局的 "orientation" 更改为 horizo​​ntal

    为了让它只占屏幕的一半,设置父布局的“权重总和”和子布局的“布局权重”。孩子的权重之和应该等于父母的权重之和。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2015-01-09
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      相关资源
      最近更新 更多