【问题标题】:shortcut for equal weights to all elements in Android LinearLayoutAndroid LinearLayout 中所有元素权重相等的快捷方式
【发布时间】:2015-08-12 23:31:58
【问题描述】:

是否有任何捷径可以让 LinearLayout 对其所有子级赋予同等权重?

我需要动态地将视图添加到线性布局中,并且我想为所有视图赋予相同的权重。有没有办法解决这个问题,而不是以编程方式将 layoutparams 添加到所有子项,然后以编程方式将布局的 weightSum 设置为布局内的元素数?

【问题讨论】:

  • 嗯,只需将1 中的weight 分配给每个孩子(在那个孩子的LinearLayout.LayoutParams 中),不要在LinearLayout 上设置weightSum
  • weightSum 可选。只需将所有权重设置为 1。确保加权尺寸设置为 0dp
  • 哦,我不知道这个:)谢谢大家!我知道这样一个常见的任务必须有一条捷径,但从没想过总和是可选的......请给出答案,这样我就可以投票给你并关闭问题

标签: android android-linearlayout shortcut android-layout-weight


【解决方案1】:

为此,您可以将 weightsum 赋予线性布局,并通过将 layout_weight 赋予线性布局内的所有视图来将其分成相等的部分。例如:

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:weightSum="3">
<View
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
/>
<View
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
/>
<View
android:layout_width="0dp"
android:layout_height="30dp"
android:layout_weight="1"
/>
</LinearLayout>

【讨论】:

    【解决方案2】:

    这里有一些代码你可以试试:

    LinearLayout ll = (LinearLayout)findViewById(R.id.linearlayout);
    int childcount = ll.getChildCount();
    for (int i=0; i < childcount; i++){
        View v = ll.getChildAt(i);
        LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams)  v.getLayoutParams();
    
        // Set only target params:
        loparams.height = 0;
        loparams.weight = 1;
        v.setLayoutParams(loparams);
    }
    

    【讨论】:

      【解决方案3】:

      好的,原来 weightSum 是 OPTIONAL,这意味着我可以将所有元素的权重设置为 1,而无需触及 weightSum 参数。 谢谢你们的帮助!

      【讨论】:

        猜你喜欢
        • 2015-02-23
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 2015-03-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-05
        • 2014-02-16
        相关资源
        最近更新 更多