Що є базовим для RelativeLayout?


75

Що означає "базовий рівень", коли використовується в контексті відносного макета? Можливо, просте запитання, але документація та google не пропонують жодних підказок.

Відповіді:


121

Термін базовий рівень походить від типографіки . Це невидимі рядкові літери в тексті.

Наприклад, уявіть, що ви ставите два 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>


1
Також Це правда за замовчуванням
Вільям Кінаан,

31

Ось наочне пояснення, яке може пояснити відповідь Крістіана:

<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>

Цей код буде виглядати так:

з android: layout_alignBaseline

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

Цікаво спостерігати, що це впливає на висоту оранжевого виду (у першому випадку відступ не застосовується до верхньої частини виду).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.