Как вертикально центрировать вид внутри вертикальной линейной компоновки? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть вертикальная линейная компоновка, которая оборачивает другую вертикальную линейную компоновку.

Как я могу сделать внутреннюю линейную компоновку вертикально центрированной?

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

<LL vertical> //outer

  <LL vertical> //inner - is used to group
    <textView> //just a view to be vertically centered
    </textView>
  <LL vertical>

    <anotherView/>

</LL vertical>

Когда я удаляю внешнюю линейную схему, я вижу, что внутренняя вертикаль центрирована относительно ее родителя.

Как я могу добиться того же вертикального центрирования?Для группировки необходим внешний линейный макет.

Я могу обернуть вертикальный LL горизонтальным LL, и тогда вертикальный_центр его сыновей будет эффективным.но разве это не расточительно?

1 Ответ

0 голосов
/ 28 сентября 2018
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

   <LinearLayout
       android:id="@+id/layout1"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="1">

   </LinearLayout>

   <LinearLayout
       android:id="@+id/inner_layout"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:gravity="center_vertical"
       android:orientation="vertical">

       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Text 1" />
   </LinearLayout>

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:id="@+id/layout2"
       android:layout_weight="1">

       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Another View" />
   </LinearLayout>

</LinearLayout>

Это может быть достигнуто как в приведенном выше макете.Поместите все ваши представления выше внутреннего макета в layout1, и все они должны быть ниже inner_layout в layout2

...