Si vous regardez l'image ci-jointe. J'ai besoin que mon bouton soit aligné à droite mais pour une raison quelconque, il ne fonctionne pas avec `` gravité: droite '' ...
Voici mon code pour cette mise en page:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="35dp">
<TextView
android:id="@+id/lblExpenseCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:textColor="#404040"
android:layout_marginLeft="10dp"
android:textSize="20sp"
android:layout_marginTop="9dp" />
<Button
android:id="@+id/btnAddExpense"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:background="@drawable/stitch_button"
android:layout_marginLeft="10dp"
android:text="@string/add"
android:layout_gravity="right"
android:layout_marginRight="15dp" />
</LinearLayout>
Pourquoi ne fonctionne pas?!
android
android-layout
ROMANIA_engineer
la source
la source
Réponses:
Utilisez le code ci-dessous pour cela
la source
LinearLayout
Solution unique . Ajout seulement d'une vue d'espacement simple:(Personne ne semblait avoir mentionné celle-ci, seulement des solutions multi-mises en page plus compliquées.)
Notez la vue "en surbrillance", je n'ai rien modifié d'autre. Height = 0 garantit qu'il n'est pas visible. Width = 0 est dû au fait que la largeur est déterminée par la
LinearLayout
base de poids = 1. Cela signifie que la vue d'espacement s'étendra autant que possible dans la direction (orientation) duLinearLayout
.Notez que vous devez utiliser
android.widget.Space
ou à laandroid.support.v4.widget.Space
place deView
si votre niveau d'API et / ou vos dépendances le permettent.Space
accomplit le travail d'une manière moins coûteuse, car il ne mesure et n'essaie pas de dessiner quelque chose comme leView
fait; c'est aussi plus expressif pour transmettre l'intention.la source
Véritable solution pour ce cas:
android:layout_weight="1"
pour TextView, et votre bouton se déplace vers la droite!la source
Je sais que cette question a été posée il y a quelque temps, mais je l'ai déjà fait et cela permet plus de contrôle lors de l'alignement des éléments. Vous venez d'en imbriquer un autre
LinearLayout
qui contiendra votre bouton à l'intérieur. Vous pouvez ensuite modifier la gravité de la disposition du bouton et le faire aller vers la droite tandis que leTextView
est toujours sur la gauche.Essayez ce code:
Vous devrez peut-être jouer avec le remplissage sur la mise en page imbriquée pour qu'il agisse comme vous le souhaitez.
la source
essaye celui-là
la source
Comme mentionné à quelques reprises auparavant: passer de LinearLayout à RelativeLayout fonctionne, mais vous pouvez également résoudre le problème au lieu de l'éviter. Utilisez les outils fournis par LinearLayout: Donnez au TextView un poids = 1 (voir le code ci-dessous), le poids de votre bouton doit rester 0 ou aucun. Dans ce cas, TextView occupera tout l'espace restant, qui n'est pas utilisé pour afficher le contenu de votre TextView ou ButtonView et pousse votre bouton vers la droite.
la source
RelativeLayout
raison de problèmes de mémoire, car ilRelativeLayout
consomme beaucoup plus de mémoire queLinearLayout
Vous devez ajouter de la gravité à la mise en page et non au bouton, la gravité dans les paramètres du bouton est pour le texte à l'intérieur du bouton
la source
Cela résoudra votre problème
la source
Si vous ne voulez pas ou ne pouvez pas utiliser RelativeLayout, vous pouvez envelopper le bouton dans un LinearLayout avec l'orientation "vertical" et la largeur "fill_parent".
En effet, si l'orientation de LinearLayout est horizontale, la gravité n'affectera que les vues verticalement. Et si l'orientation est «verticale», la gravité n'affectera que les vues horizontalement. Voir ici pour plus de détails sur l'orientation / la gravité de LinearLayout.
la source
Ajoutez simplement android: gravity = "right" cette disposition parente en ligne, cela fonctionnera.
la source
J'ai utilisé une mise en page similaire avec 4
TextView
s. DeuxTextView
s doivent être alignés à gauche et deuxTextView
s doivent être alignés à droite. Alors, voici ma solution, si vous souhaitez l'utiliserLinearLayouts
seul.la source
Vous pouvez utiliser RelativeLayout ou définir gravity = "right" sur la disposition parent de votre Button.
la source
Je sais que c'est vieux, mais en voici un autre dans une mise en page linéaire:
Veuillez noter le layout_gravity par opposition à la simple gravité.
la source
center_vertical|bottom|top
? Ils ressemblent à des gravités d'alignement exclusives pour moi.Vous devez utiliser la disposition relative au lieu de la disposition linéaire comme disposition principale. Si vous utilisez Relativelayout comme principal, manipulez facilement le bouton sur le côté droit car la disposition relative nous fournit alignParent droite, gauche, haut et bas.
la source
Utilisez la largeur de mise en page dans le bouton comme android: layout_width = "75dp"
la source