Android - Comment positionner les vues dans un décalage par rapport au centre / haut / bas (etc.) de leur parent?



0 Answers

Je viens de commencer la programmation Android ce soir, donc ça peut être vieux ou une mauvaise idée ... mais je bricolais avec la réponse ci-dessus et j'ai trouvé que le positionnement d'un élément en dessous de mon autre élément posait un problème - soit le rembourrage serait gênant ou quelque chose. Voici ce que j'ai fini par faire.

En utilisant la technique d'ancrage, j'ai également donné une hauteur à l'ancre (double ce dont vous avez besoin), puis aligné mon élément avec le haut. De cette façon, il serait au milieu de la vue moins la moitié de la hauteur de l'ancre!

<View
    android:id="@+id/anchor"
    android:layout_width="0dp"
    android:layout_height="200dp"
    android:layout_centerInParent="true" />

<TextView
    android:id="@+id/heading"
    android:text="@string/heading"
    android:textColor="@android:color/white"
    android:textSize="24sp"
    android:layout_alignTop="@id/anchor"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/subheading"
    android:text="@string/subheading"
    android:textColor="@android:color/white"
    android:textSize="12sp"
    android:layout_below="@+id/heading"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

L'autre réponse m'a beaucoup aidé mais je voulais juste donner mes 2 cents!

Question

J'ai un RelativeLayout avec des vues alignées par rapport à lui (leur parent), en utilisant (par exemple):

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
textView.setLayoutParams(layoutParams);

et maintenant je me demande, comment puis-je placer la vue par rapport au fond de son parent, mais à un décalage (par exemple 100 pixels au-dessus du fond, 20 pixels de la gauche, etc.), ou de même avec le centre le centre)?

J'ai essayé de définir les marges de la vue (par exemple):

layoutParams.setMargins(140, 0, 0, 0);

avant de l'appliquer à textView , mais cela n'a pas fonctionné.

Cela semble être un moyen extrêmement utile d'aligner des vues pour différentes tailles d'écran.

Il est important pour moi d'y parvenir dans le code, sans utiliser de xml.

Merci!






Related