【问题标题】:Equal width and height layout constraint等宽高布局约束
【发布时间】:2016-02-05 06:03:10
【问题描述】:

我在 Android 中有以下要求:

给定一个水平的LinearLayout,我有五个按钮。所有按钮应具有相同的宽度和高度。每个按钮的高度与其父级LinearLayout 相同,并且它们之间的间距应保持不变。 LinearLayout 的高度不是恒定的,取决于外形尺寸和其他布局大小。因此,我不能为每个按钮分配固定的高度/高度。

虽然我可以借助约束在 iOS 中轻松实现这一点,但我不确定如何在设计时在 Android 中实现这一点。有什么方法可以实现这一点,还是只能通过编程方式实现?

【问题讨论】:

    标签: android layout


    【解决方案1】:

    每个按钮的高度与其父LinearLayout相同

    将高度设置为match_parent

    对于您的宽度,您必须以编程方式计算屏幕尺寸并相应地设置宽度。见this question

    【讨论】:

      【解决方案2】:

      试试这个。由于您有一个带有 5 个按钮的水平线性布局,因此要使所有按钮的间距相等,您必须首先将空间分配给可用总空间中的每个按钮,如下所示..

      <LinearLayout
                  android:weightSum="5"
                  android:orientation="horizontal"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content">
                   <Button
                          android:layout_weight="1"
                          android:layout_width="0dp"
                          android:layout_height="allocate it programatically"
                          />
      

      上面显示的这个按钮必须适用于您拥有的所有 5 个按钮。将权重总和 5 分配给 LinearLayout 然后将其除以 1 到每个按钮的想法。注意这里按钮的宽度应该是0dp。

      然后根据您的要求动态更改按钮的高度和宽度

      【讨论】:

      • 我的意思是按钮之间的间距(间隙)相同,而不仅仅是它们的宽度。所以想法是有一个恒定的间距,然后剩余的宽度应该平均分配给 5 个按钮。
      【解决方案3】:

      不幸的是,Android 中的典型布局似乎没有这种布局约束的概念(方形元素)。

      最终决定子项大小的是布局。因此,如果您希望您必须编写自己的布局来实现此约束。

      为此扩展ViewGrouponLayout 强制子级或特定子级的宽度等于高度。您甚至可以为此任务发明自己的LayoutParams。请参阅ViewGroupdocumentation 以获得一般示例。确切的实现很大程度上取决于您对布局还有哪些其他要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-26
        • 2017-05-16
        • 1970-01-01
        • 2020-01-18
        • 1970-01-01
        相关资源
        最近更新 更多