Що означає "базовий рівень", коли використовується в контексті відносного макета? Можливо, просте запитання, але документація та google не пропонують жодних підказок.
Відповіді:
Термін базовий рівень походить від типографіки . Це невидимі рядкові літери в тексті.
Наприклад, уявіть, що ви ставите два 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>
Ось наочне пояснення, яке може пояснити відповідь Крістіана:
<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
атрибут, той самий макет виглядає так:
Цікаво спостерігати, що це впливає на висоту оранжевого виду (у першому випадку відступ не застосовується до верхньої частини виду).