Was ist die Basislinie in RelativeLayout?

75

Worauf bezieht sich "Grundlinie", wenn sie im Kontext eines relativen Layouts verwendet wird? Einfache Frage wahrscheinlich, aber die Dokumentation und Google bieten keine Hinweise.

David Liu
quelle

Antworten:

121

Der Begriff Baseline stammt aus der Typografie . Es sind die unsichtbaren Zeilenbuchstaben im Text.

Stellen Sie sich zum Beispiel vor, Sie platzieren zwei TextViewElemente nebeneinander. Sie geben dem zweiten TextVieweine große Polsterung (sagen wir 20dp). Wenn Sie layout_alignBaselinedem zweiten Element hinzufügen , wird der Text "nach oben verschoben", um ihn an der Grundlinie des ersten Elements auszurichten. Der Text beider Elemente wird so angezeigt, als ob sie in derselben unsichtbaren Zeile geschrieben wären.

<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>
Cristian
quelle
23
Ein erklärendes Bild
hinzuzufügen
1
Auch ist es standardmäßig wahr
William Kinaan
31

Hier ist eine visuelle Erklärung, die Cristians Antwort verdeutlichen könnte:

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

Dieser Code sieht folgendermaßen aus:

mit android: layout_alignBaseline

Wenn ich nun das android:layout_alignBaselineAttribut entferne , sieht das gleiche Layout folgendermaßen aus:ohne android: layout_alignBaseline

Es ist interessant zu beobachten, dass sich dies auf die Höhe der orangefarbenen Ansicht auswirkt (im ersten Fall wird die Polsterung nicht oben in der Ansicht angewendet).

Sébastien
quelle