Pouvez-vous centrer un bouton dans RelativeLayout?
175
J'essaie de centrer un bouton dans une disposition relative, est-ce possible? J'ai essayé les fonctions Gravité et Orientation mais elles ne font rien.
Qui centre horizontalement et veritcally, comment 'bout layout_centerHorizontal = true
user3076750
37
Arcadia, essayez simplement le code ci-dessous. Il existe plusieurs façons d'obtenir le résultat que vous recherchez, c'est l'une des méthodes les plus simples.
La définition de la gravité du RelativeLayout lui-même affectera tous les objets placés à l'intérieur. Dans ce cas, c'est juste le bouton. Vous pouvez utiliser n'importe lequel des paramètres de gravité ici, bien sûr (par exemple center_horizontal, top, right, etc.).
Vous pouvez également utiliser ce code ci-dessous:
Merci. Cependant, si j'avais plusieurs boutons et n'en voulais qu'un centré, comment ferais-je? Le premier code centrerait tout dans la disposition relative parente. Aussi, comment pourrais-je centrer le bouton en haut de sa rangée?
Arcadia
Utilisez simplement le deuxième exemple et ajoutez uniquement centerInParent au bouton que vous souhaitez centrer. Vous pouvez également utiliser centerHorizontal et layout_alignParentTop pour l'aligner sur le haut et le centrer horizontalement. Qu'est-ce que vous essayez de réaliser exactement, je pourrais peut-être donner un meilleur exemple.
Kevin Coppock
Je commence à peine mes études sur le développement d'Android et j'essaie de comprendre pleinement comment manipuler les choses pour faire ce que je veux. Fondamentalement, je veux éviter d'aligner les choses avec des pixels car l'image peut sembler très différente sur un type / une résolution d'écran différent. Cependant, lorsque vous utilisez la commande de gravité, tout la suit. J'ai essayé de désactiver la gravité pour un bouton en utilisant ignoreGravity et cela n'a pas fonctionné. Ce truc est très délicat.
Arcadia
Ouais, ça peut certainement être. Il existe de nombreuses façons de créer une mise en page particulière. Le meilleur moyen est de le dessiner dans votre tête comme vous le souhaitez et de partir de là. Ce tutoriel rapide peut également aider certains: developer.android.com/resources/tutorials/views/…
Kevin Coppock
Ouais, je faisais ce tutoriel. Je suis en train de parcourir chacun des tutoriels et j'apprends à les manipuler complètement, sinon je n'aurai pas une idée de la différence entre chacun d'eux.
Arcadia
25
Résumé
Ajouter:
android:layout_centerInParent="true"
fonctionne uniquement sur RelativeLayout, si l'un des attributs suivants est également défini pour la vue:
Pour centrer l'alignement dans l'une des directions, utilisez android: layout_centerHorizontal = "true" ou android: layout_centerVertical = "true" dans la mise en page enfant
Supprimer tout alignement comme Android: layout_alignParentStart = "true" et ajouter centerInParent a fonctionné pour moi. Si le "align" reste dans, le centerInParent ne fonctionne pas
Les réponses au code uniquement ne sont pas les bienvenues ici. Essayez de publier plus de détails sur les raisons pour lesquelles la réponse ci-dessus fonctionnera. :)
Vivz
Merci pour la ligne directrice. Je suis nouveau ici.
Primesh
0
vous devez l'avoir aligné à gauche ou à droite de la vue parent
n'utilisez aucun de ceux-ci lorsque vous utilisez des android:centerInParent="true"codes: -
Réponses:
Essayer
Exactement comme ça, ça marche pour moi:
la source
Vous pouvez utiliser CENTER_IN_PARENT pour une mise en page relative.
Ajouter
android:layout_centerInParent="true"
à l'élément que vous souhaitez centrer dans le RelativeLayoutla source
Arcadia, essayez simplement le code ci-dessous. Il existe plusieurs façons d'obtenir le résultat que vous recherchez, c'est l'une des méthodes les plus simples.
La définition de la gravité du RelativeLayout lui-même affectera tous les objets placés à l'intérieur. Dans ce cas, c'est juste le bouton. Vous pouvez utiliser n'importe lequel des paramètres de gravité ici, bien sûr (par exemple center_horizontal, top, right, etc.).
Vous pouvez également utiliser ce code ci-dessous:
la source
Résumé
Ajouter:
fonctionne uniquement sur RelativeLayout, si l'un des attributs suivants est également défini pour la vue:
qui aligne la vue enfant sur la vue parent. Le "centre" est basé sur l'axe de l'alignement que vous avez choisi:
gauche / droite -> vertical
haut / bas -> horizontal
Définition de la gravité des enfants / du contenu dans la vue:
centre l'enfant dans la vue parent dans tous les cas, s'il n'y a pas d'alignement défini. Facultatif, vous pouvez choisir:
Ensuite il y a:
qui centre la vue elle-même dans son parent
Et enfin, vous pouvez ajouter l'attribut suivant à la vue des parents:
la source
Utilisez l'attribut à l'
android:centerInParent="true"
intérieur d'une vue, lorsque vous souhaitez centrer la vue dans la disposition relative.la source
C'est facile, ne l'alignez sur rien
la source
Pour centrer l'alignement dans l'une des directions, utilisez android: layout_centerHorizontal = "true" ou android: layout_centerVertical = "true" dans la mise en page enfant
la source
Supprimer tout alignement comme Android: layout_alignParentStart = "true" et ajouter centerInParent a fonctionné pour moi. Si le "align" reste dans, le centerInParent ne fonctionne pas
la source
C'est vraiment simple. Essayez le code ci-dessous,
la source
vous devez l'avoir aligné à gauche ou à droite de la vue parent
n'utilisez aucun de ceux-ci lorsque vous utilisez des
android:centerInParent="true"
codes: -android:layout_alignParentLeft="true"
android:layout_alignParentLeft="true"
android:layout_alignRight=""
etc.
la source