Android布局重量故障?

时间:2018-03-16 01:36:38

标签: android android-layout

在Android应用上使用layout_weight时,我遇到了一些奇怪的故障。为了确保我不浪费任何人的时间。当我有三个自定义视图并给出两个视图时,权重为1,一个视图的权重为2.权重为2的视图应该是最大的,对吧?因为那件事发生在我身上。

几个例子的行为:

  • 1:2:1 - 中间的视图完全消失。
  • 1.1:1.1:1 - 前两个视图略小于第三个视图。 (这是我目前用来获得所需布局的。)

代码:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginStart="25dp"
        android:layout_marginEnd="25dp"
        android:orientation="vertical"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="parent"
        app:layout_constraintBottom_toBottomOf="parent">

        <CUSTOMVIEW
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="12.5dp"
            android:layout_weight="1.1" />

        <CUSTOMVIEW
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="12.5dp"
            android:layout_marginBottom="12.5dp"
            android:layout_weight="1.1"/>

        <CUSTOMVIEW
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="12.5dp"
            android:layout_weight="1"/>
    </LinearLayout>

注意:我尝试为自定义视图提供0dp的宽度和高度,但它们完全消失了。

2 个答案:

答案 0 :(得分:1)

制作高度0dp和宽度wrap_content。干得好B.Cakir。

答案 1 :(得分:0)

如果要在视图中使用layout_weight,则必须在父视图中使用weight_sum。例如:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginStart="25dp"
    android:layout_marginEnd="25dp"
    android:orientation="vertical"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    android:weightSum="3.2">

    <CUSTOMVIEW
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12.5dp"
        android:layout_weight="1.1" />

    <CUSTOMVIEW
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="12.5dp"
        android:layout_marginBottom="12.5dp"
        android:layout_weight="1.1"/>

    <CUSTOMVIEW
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="12.5dp"
        android:layout_weight="1"/>
</LinearLayout>

请注意,weight_sum属性是1.1 + 1.1 + 1 = 3.2

的结果