Comment aligner LinearLayout au centre de son parent?

J’ai regardé à travers de nombreuses questions similaires ici à SO, mais rien n’aide. J’ai une hiérarchie de différentes dispositions nestedes, toutes ont android:layout_width="fill_parent" , et la disposition la plus interne a android:layout_width="wrap_content ?

Mise à jour:: J’ai trouvé la cause du problème – si je mets le LinearLayout interne dans RelativeLayout avec android:layout_width="fill_parent" , cela android:layout_width="fill_parent" toujours son contenu. Le TableRow, cependant, remplit vraiment l’écran.

              

Ces deux atsortingbuts sont généralement confondus:

  • android:gravity définit la gravité du contenu de la vue sur laquelle elle est utilisée.
  • android:layout_gravity définit la gravité de la vue ou de la mise en page par rapport à son parent .

Donc soit mettre android:gravity="center" sur le parent ou android:layout_gravity="center" sur le LinearLayout lui-même.

Je me suis surpris à plusieurs resockets en les mélangeant et en me demandant pourquoi les choses ne se concentraient pas correctement …

S’il vous plaît essayer ceci dans votre disposition linéaire

 android:layout_centerHorizontal="true" android:layout_centerVertical="true" 
       

pensez à envelopper par rapport à LinearLayout. android:layout_centerHorizontal="true" positionnera le centre de la vue horizontalement.

Ajouter layout_gravity="center" ou "center_horizontal" à la mise en page parente.

Sur une note de côté, votre LinearLayout dans votre TableRow semble inutile, car un TableRow est déjà un LinearLayout horizontal.

Essaye ça:

              

Cela a fonctionné pour moi .. en ajoutant une vue vide ..

       

Essayez Cela permettra de centrer le LinearLayout interne au sein du tableau.

L’explication de @jksschneider a presque raison. Assurez-vous que vous n’avez défini aucune gravity sur la mise en page parente, puis définissez layout_gravity="center" sur votre vue ou votre présentation.

J’ai été confronté à la même situation lors de la conception d’une notification personnalisée. J’ai essayé avec l’atsortingbut suivant défini avec true.

  android:layout_centerInParent. 

Cela a fonctionné pour moi.

  . . . android:gravity="center" . .>    

de sorte que vous concevez la disposition linéaire pour placer tous ses contenus (TextView et Button) en son centre, puis les TextView et Button sont placés par rapport au centre de la disposition linéaire

pour ImageView ou les autres vues, il n’existe pas de gravité ou de gravité:

Le problème est que la gravité de la racine (la disposition principale que vous stockez les autres éléments) n’est pas définie. Si vous changez le centre de gravité, la gravité des autres éléments doit fonctionner correctement.