J'ai deux boutons que j'aimerais apparaître côte à côte horizontalement, mais ensemble, ils remplissent la longueur horizontale du téléphone. La hauteur est une teneur enrôle, c'est bien. Mon problème est maintenant que seul un seul bouton s'affiche (étirement sur l'écran).
Voici mon code XML: p> p> p>
8 Réponses :
Modifiez vos boutons XML pour inclure l'attribut layout_weight code>:
En plus de la réponse acceptée, je pense qu'il convient de souligner que la disposition linéaire qui enveloppe les deux boutons doit avoir l'option Android: Orientation = "horizontal" code>. Je suis lent et je n'ai pas attrapé cela au début.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/entry" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/space"/> <TextView android:id="@+id/space" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true"/> <Button android:id="@+id/button02" android:layout_toRightOf="@id/button01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/entry" android:layout_alignParentRight="true"/> </RelativeLayout> Seems like you want two equal buttons, not wrapped content. I created a centered spacer using TextView, and relatively aligned to that. Left button to parent left and spacer, Right button to Left Button and parent right.
Votre exigence est
<LinearLayout android:id="@+id/page_buttons" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:id="@+id/prevButton" android:layout_width="0dp" android:weight="0.5" android:layout_height="wrap_content" android:text="Previous" /> <Button android:id="@+id/nextButton" android:layout_width="0dp" android:weight="0.5" android:layout_height="wrap_content" android:text="Next" />
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true"> <TextView android:text="@+id/SomeText" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:background="@android:drawable/bottom_bar" android:paddingLeft="4.0dip" android:paddingTop="5.0dip" android:paddingRight="4.0dip" android:paddingBottom="1.0dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/TextView01"> <Button android:id="@+id/allow" android:layout_width="0.0dip" android:layout_height="fill_parent" android:text="Allow" android:layout_weight="1.0" /> <Button android:id="@+id/deny" android:layout_width="0.0dip" android:layout_height="fill_parent" android:text="Deny" android:layout_weight="1.0" /> </LinearLayout> </RelativeLayout>
Puisque personne n'explique pourquoi leurs solutions fonctionnent, je vais y aller. p>
Le problème réside dans la mise en page des boutons. Les deux attributs concernés sont layout_width et layout_weight. P>
Dans d'autres systèmes de mise en page, lorsque vous indiquez que chaque élément d'une mise en page doit remplir le parent (Layout_width = "Fill_Parent"), ils le font en distribuant également l'espace du parent entre eux. Donc, chacun d'entre eux aurait la même taille. P>
Au lieu de cela, dans le système de mise en page d'Android, si les deux éléments ont Layout_width = "Fill_Parent" Le premier élément (dans votre cas, le Bouton de prévisualisation) sera étiré pour remplir le parent et la seconde (ou troisièmement, ou etc.) n'auront plus d'espace pour distribuer, de sorte qu'il ne sera pas visible. p> blockQuote>
Maintenant, pour que cela comprenne que vous souhaitez que les deux boutons affichent, vous définissez le poids de layout_weight pour chaque bouton. Pour que les boutons ont la même taille, définissez le même poids de mise en page sur eux. P>
Le poids de layout_Port définit le nombre de "parties" (ou segments) du parent chacun des boutons occupant. Le parent sera réduit dans un certain nombre de segments égaux à la somme des segments des enfants. Si vous souhaitez effectuer un bouton trois fois plus gros, vous devez l'affecter le nombre de parties égales au nombre de parties du premier bouton, multipliée par trois. P>
Donc, si vous voulez que votre prochain bouton soit deux fois plus grand, alors le Bouton Aperçu, vous pouvez le faire: p>
- pour le bouton Aperçus: Layout_weight = 1 li>
- pour le bouton Suivant: Layout_weight = 2 li> ul> blockQuote>
En conséquence, le parent sera coupé en 3 parties, dont 2 sera attribué au bouton Suivant et 1 au bouton Aperçu. P>
L'exemple pris ici est pour les boutons et la disposition horizontale, mais cela fonctionnera simplement pour tout type d'objet et également pour la mise en page verticale. P>
Merci beaucoup pour l'explication
Le parent de votre bouton est la disposition linéaire et vous définissez la largeur du bouton comme remplissage parent et que cela prend tout l'espace. Vous avez deux options pour implémenter cela ... p>
Les deux boutons doivent être sur une linearlayout. La disposition linéaire doit être horizontale et chaque bouton a un poids de 1. Cela devrait vous donner deux boutons avec une taille égale le long de la largeur de l'écran. Un échantillon est ici Orientation horizontale: Vérifiez les 2 boutons de la fin de cette mise en page XML p>
J'ai trouvé le premier problème pour les personnes qui ne semble toujours pas avoir ce qu'ils veulent. Lorsque vous utilisez des boutons avec leur arrière-plan conventionnel (hors de la boîte / défaut), il a une marge intégrée. Si vous essayez de changer le fond manuellement avec une seule couleur, vous pouvez vous dire facilement que vous devez simplement définir un arrière-plan séparé. autre que lorsque vous avez les poids mis en place, cela fonctionnera. P>
Comment attendez-vous exactement que deux boutons apparaissent à l'écran, étant donné que vous avez spécifié un seul dans le XML? Créez-vous de manière dynamique le second et l'ajoutez-vous à la disposition linéaire?
J'ai édité le message pour la rendre lisible maintenant.