LinearLayout 2 views, if one is gone, it doesn't center the other, although I update the weightSum

ros*_*lin 2 android android-linearlayout layout-gravity android-layout-weight

this is my layout:

 <LinearLayout
        android:id="@+id/car_linear_layout"
        android:layout_toRightOf="@id/car_image"
        android:layout_width="wrap_content"
        android:orientation="vertical"
        android:layout_centerVertical="true"
        android:gravity="center_vertical"
        android:layout_height="50sp"
        android:weightSum="2">
        <TextView
            android:id="@+id/car_layout_name"
            android:textSize="17sp"
            android:maxLines="1"
            android:textColor="@color/black"
            android:ellipsize="end"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"/>
        <TextView
            android:id="@+id/car_layout_license"
            android:textSize="17sp"
            android:maxLines="1"
            android:ellipsize="end"
            android:textColor="@color/black"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"/>
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

And this is my code:

    if (userVehicleID != null) {
        carLayout.setWeightSum(2);
        carLicense.setText("test");
    }else{
        carLayout.setWeightSum(1);
        carLicense.setVisibility(View.GONE);
    } 
Run Code Online (Sandbox Code Playgroud)

But even so, if I debug, and it enters the ELSE , it will show just the first textview, but it's not centered. why?

ADM*_*ADM 7

只需android:weightSum从父布局中删除。

因此,如果您将任何孩子的可见性设置为,GONE那么另一个孩子将覆盖重量。如果在您的情况下父布局是wrap_content在将孩子设为 之后GONE,这将使您的父LinearLayout高度等于VISIBLETextView 的高度。这就是layout_weight工作方式。

<LinearLayout
    android:id="@+id/car_linear_layout"
    android:layout_toRightOf="@id/car_image"
    android:layout_width="wrap_content"
    android:orientation="vertical"
    android:layout_centerVertical="true"
    android:gravity="center_vertical"
    android:layout_height="50sp"
   >
    <TextView
        android:id="@+id/car_layout_name"
        android:textSize="17sp"
        android:maxLines="1"
        android:textColor="@color/black"
        android:ellipsize="end"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"/>
    <TextView
        android:id="@+id/car_layout_license"
        android:textSize="17sp"
        android:maxLines="1"
        android:ellipsize="end"
        android:textColor="@color/black"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)