我们可以使用android:layout_weight而无需将android:weightSum添加到父级吗?如果是,可能会出现什么问题?

时间:2017-05-22 05:13:33

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

android:weightSum是否必须使用android:layout_weight? 我们可以直接在android:layout_weight内使用linearlayout而无需分配android:weightSum。任何人请告诉我使用android:layout_weight和没有android:weightSum的利弊。提前谢谢。

示例代码:

 <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/table_view"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:orientation="horizontal">

            <Button
                android:id="@+id/button_1"
                style="@style/BaseButtonStyle"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="@string/start" />

            <Button
                android:id="@+id/button_2"
                style="@style/BaseButtonStyle"
                android:layout_width="0dp"
                android:layout_height="36dp"
                android:layout_weight="1"
                android:text="@string/pause"
                android:textColor="@color/teal" />

            <Button
                android:id="@+id/button_3"
                style="@style/BaseButtonStyle"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="@string/stop" />
        </LinearLayout>

2 个答案:

答案 0 :(得分:0)

  

我们可以使用android:layout_weight而不添加android:weightSum   父母?

是的,我们可以。考虑下面的例子 -

Consider this example

如果您希望将Terms & Condition行设置为右侧TextViewImageButton。它会像: -

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp"
        android:orientation="horizontal">

        <!-- Width of TextView = Width of LinearLayout - width of ImageButton -->
        <TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="?selectableItemBackgroundBorderless"
            android:src="@drawable/ic_vector_back_black_18dp"/>

    </LinearLayout>

对于WeightSum的概念,您可以参考此SO link

答案 1 :(得分:0)

是的,我们可以使用权重而不在父级中定义权重和。在这种情况下,通过增加每个孩子的体重来计算孩子的总体重。

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center">

   <ImageView
       android:layout_height="wrap_content"       
       android:layout_weight="1"
       android:layout_width="0dp"/>

   <ImageView
       android:layout_height="wrap_content"       
       android:layout_weight="1"
       android:layout_width="0dp"/>

   <ImageView
       android:layout_height="wrap_content"       
       android:layout_weight="1"
       android:layout_width="0dp"/>
</LinearLayout>

父布局现在将自动将权重总和设为3(每个孩子的体重总和)

以下是有关此主题的更多资源

What is android:weightSum in android, and how does it work?

https://developer.android.com/reference/android/widget/LinearLayout.html