Какова базовая линия в RelativeLayout? - PullRequest
72 голосов
/ 23 июня 2011

Что означает «базовый уровень» при использовании в контексте относительного макета? Простой вопрос, наверное, но в документации и гугле нет подсказок.

Ответы [ 3 ]

117 голосов
/ 23 июня 2011

Термин базовый уровень происходит от типографии . Это невидимые строки букв в тексте.

Например, представьте, что вы положили два элемента TextView рядом друг с другом. Вы даете второй TextView большой отступ (скажем, 20dp). Если вы добавите layout_alignBaseline ко второму элементу, текст будет «сдвигаться вверх» для выравнивания с базовой линией первого элемента. Текст из обоих элементов будет выглядеть так, как если бы они были написаны на одной невидимой строке.

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
  <TextView
      android:id="@+id/text1"
      android:text="aatlg"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      />
  <TextView
      android:text="joof"
      android:background="#00ff00"
      android:padding="20dp"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_toRightOf="@id/text1"
      android:layout_alignBaseline="@id/text1"
      />
</RelativeLayout>
28 голосов
/ 06 сентября 2016

Вот визуальное объяснение, которое могло бы прояснить ответ Кристиана:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <TextView
        android:id="@+id/text1"
        android:text="Lorem"
        android:background="@android:color/holo_blue_light"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:text="Ipsum"
        android:background="@android:color/holo_orange_light"
        android:padding="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/text1"
        android:layout_alignBaseline="@id/text1" />
</RelativeLayout>

Этот код будет выглядеть следующим образом:

with android:layout_alignBaseline

Теперь, если я удалю атрибут android:layout_alignBaseline, тот же макет будет выглядеть следующим образом: without android:layout_alignBaseline

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

1 голос
/ 26 августа 2018

enter image description here

Базовая линия - это линия под текстом текстового представления.

...