web-dev-qa-db-fra.com

Quelle est la ligne de base dans RelativeLayout?

À quoi fait référence la "ligne de base" lorsqu'elle est utilisée dans le contexte d'une disposition relative? Question simple, probablement, mais la documentation et Google n'offrent aucun indice.

73
David Liu

Le terme la ligne de base vient de la typographie . Ce sont les lettres en ligne invisible dans le texte.

Par exemple, imaginez que vous placez deux éléments TextView l'un à côté de l'autre. Vous donnez au second TextView un grand rembourrage (disons 20dp). Si vous ajoutez layout_alignBaseline au deuxième élément, le texte "remontera" pour s'aligner sur la ligne de base du premier élément. Le texte des deux éléments apparaîtra comme s'il avait été écrit sur la même ligne invisible.

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

Voici une explication visuelle qui pourrait clarifier la réponse de Cristian:

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

Ce code ressemblera à ceci:

with Android:layout_alignBaseline

Maintenant, si je supprime le Android:layout_alignBaseline attribut, la même disposition ressemble à ceci: without Android:layout_alignBaseline

Il est intéressant de noter qu'il y a un impact sur la hauteur de la vue orange (dans le premier cas, le rembourrage n'est pas appliqué en haut de la vue).

28
Sébastien

enter image description here

La ligne de base est une ligne sous le texte d'une vue de texte.

1
Tarasantan