пересчитывается ли вес, когда один из дочерних представлений меняет свою видимость на пропущенный во время выполнения кода? - PullRequest
0 голосов
/ 27 сентября 2018

У меня линейная схема с двумя линейными схемами, как у детей.

у них есть веса.иногда этот нижний дочерний макет линейки имеет видимость gone, но тогда я ожидал бы, что верхний дочерний элемент будет вертикально центрирован

Что не произошло.

Почему это так?

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_vertical"
        android:background="@color/google_blue900"
        android:orientation="vertical">
      <LinearLayout
          android:id="@+id/display_name_layout"
          android:layout_width="wrap_content"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:gravity="center_vertical"
          android:background="@color/google_red100"
          android:orientation="horizontal">
        <TextView
            android:id="@+id/account_display_name"
            style="@style/AccountDataDisplayName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@color/google_green50"
            tools:text="DisplayNameIsLongSoItShouldBeTruncatedAtSomePoint"/>
        <ImageView
            android:id="@+id/display_name_chevron"
            android:layout_width="@dimen/account_menu_chevron_size"
            android:layout_height="@dimen/account_menu_chevron_size"
            android:layout_marginTop="@dimen/account_menu_chevron_top_margin"
            android:layout_marginLeft="@dimen/account_menu_chevron_left_margin"/>
      </LinearLayout>
      <LinearLayout
          android:id="@+id/account_name_layout"
          android:layout_width="wrap_content"
          android:layout_height="0dp"
          android:layout_weight="1"
          android:gravity="center_vertical"
          android:background="@color/google_blue50"
          android:orientation="horizontal">
        <TextView
            android:id="@+id/account_name"
            style="@style/AccountDataAccountName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:background="@color/google_yellow50"
            tools:text="emailisverylongaswellwewantittogettruncated@gmail.longdomain.com"/>
        <ImageView
            android:id="@+id/account_name_chevron"
            android:layout_width="@dimen/account_menu_chevron_size"
            android:layout_height="@dimen/account_menu_chevron_size"
            android:layout_marginTop="@dimen/account_menu_chevron_top_margin"
            android:layout_marginLeft="@dimen/account_menu_chevron_left_margin"/>
      </LinearLayout>
    </LinearLayout>

когда я изменяю видимость второго линейного макета, который пропал,

Я ожидаю, что верхний линейный макет будет в центре по вертикали в родительском макете линейного макета.

что яотсутствует, так как теперь он не центрирован по вертикали

enter image description here

1 Ответ

0 голосов
/ 27 сентября 2018

LL всегда размещает детей, начиная с верхнего левого угла.Так что нет смысла для вертикального центра, когда LL вертикальный нет смысла для горизонтального центра, когда LL горизонтальный

...