Je lis toujours sur cette drôle de valeur de poids dans les documentations Android. Maintenant, je veux l'essayer pour la première fois mais cela ne fonctionne pas du tout.
Si je comprends bien des documentations cette mise en page:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="Register"
android:id="@+id/register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
<Button
android:text="Not this time"
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dip"
weight="1" />
</LinearLayout>
devrait créer deux boutons qui sont alignés horizontalement et partagent l'espace également. Le problème est que les deux boutons ne se développent pas pour remplir l'espace.
J'aimerais que les boutons grandissent et remplissent toute la ligne. Si les deux boutons sont définis pour correspondre au parent, seul le premier bouton est affiché et remplit toute la ligne.
Réponses:
Vous ne définissez pas la
layout_weight
propriété. Votre code litweight="1"
et devrait lireandroid:layout_weight="1"
.la source
3 choses à retenir:
Exemple:
Et le résultat:
la source
addView(button, new LinearLayout.LayoutParams(0, height, 1));
Cela est vrai même si vous gonflez des mises en page avec les valeurs de largeur et de poids correctes.Ça l'est
android:layout_weight
. Le poids ne peut être utilisé qu'enLinearLayout
. Si l'orientation de la présentation linéaire est verticale, utilisez-laandroid:layout_height="0dp"
et si l'orientation est horizontale, utilisez-laandroid:layout_width = "0dp"
. Cela fonctionnera parfaitement.la source
Cette image résume la disposition linéaire.
Vous pouvez suivre ce lien pour plus d'informations sur le sujet. Just Maths - Vues, groupes de vues et mises en page
Tutoriel vidéo pour la mise en page linéaire: largeur, hauteur et poids
Tutoriel de mise en page linéaire Android
la source
Essayez de régler les
layout_width
deux boutons sur "0dip" et lesweight
deux boutons sur0.5
la source
LinearLayout prend en charge l'attribution d'un poids à chaque enfant. Cet attribut attribue une valeur "d' importance " à une vue et lui permet de se développer pour remplir tout espace restant dans la vue parent. Le poids par défaut est zéro
calcul pour attribuer tout espace restant / supplémentaire entre l'enfant. (pas l'espace total)
espace attribué à l'enfant = (poids individuel de l'enfant) / (somme du poids de chaque enfant dans la disposition linéaire)
Exemple (1): s'il y a trois zones de texte et deux d'entre elles déclarent un poids de 1, tandis que la troisième n'a pas de poids (0), alors l' espace restant / supplémentaire est attribué à
Exemple (2) : disons que nous avons une étiquette de texte et deux éléments d'édition de texte sur une ligne horizontale. L'étiquette n'a pas de poids de disposition spécifié, elle occupe donc l'espace minimum requis pour le rendu. Si la mise en page_poids de chacun des deux éléments d'édition de texte est définie sur 1, la largeur restante dans la mise en page parent sera répartie également entre eux (car nous prétendons qu'ils sont également importants).
Si la première zone de texte a un poids de mise en page de 1 et la deuxième zone de texte a un poids de mise en page de 2, alors un tiers de l'espace restant sera donné au premier et deux tiers au second (car nous prétendons que le second est plus important).
la source
Dans le champ largeur du bouton, remplacez
wrap-content
par0dp
.Utilisez l'attribut layout_weight d'une vue.
Voici à quoi ressemblera votre code:
layout_weight est utilisé pour distribuer l'espace laissé en proportions. Dans ce cas, les deux boutons prennent une largeur de "0dp". Ainsi, l'espace restant sera divisé en proportion 1: 1 entre eux, c'est-à-dire que l'espace sera divisé également entre les vues de bouton.
la source
Comme réponse de @Manoj Seelan
Remplacez
android:layout_weight
parandroid:weight
.Lorsque vous utilisez Weight avec
LinearLayout
. vous devez ajouterweightSum
dansLinearLayout
et selon l'orientation de votre ,LinearLayout
vous devez fixer0dp
pour la largeur / hauteur à tousLinearLayout
s `vue enfantsExemple :
Si l'orientation de
Linearlayout
estVertical
, définissez la largeur de toutes lesLinearLayout
vues enfants de0dp
Si l'orientation
Linearlayout
de esthorizontal
, définissez la hauteur de toutes lesLinearLayout
vues Enfants avec0dp
.la source
Peut-être que définir les deux propriétés des boutons layout_width sur "fill_parent" fera l'affaire.
Je viens de tester ce code et cela fonctionne dans l'émulateur:
Assurez-vous de définir layout_width sur "fill_parent" sur les deux boutons.
la source
la source
Dans le code XML ci-dessus, définissez la
android:layout_weight
disposition linéaire comme suit2
:android:layout_weight="2"
la source
De plus, vous devez l'ajouter
android:layout_width="0dp"
pour les vues enfants [Vues boutons] deLinerLayout
la source
Vous devez écrire comme ça son travail pour moi
la source
Voici les modifications (marquées en GRAS ) dans votre code:
Étant donné que votre LinearLayout a une orientation horizontale, vous devrez donc conserver votre largeur uniquement à 0dp. pour utiliser des poids dans cette direction. (Si votre orientation était verticale, vous n'auriez gardé votre hauteur que 0 dp) .
Puisqu'il y a 2 vues et que vous avez placé
android:layout_weight="1"
pour les deux vues, cela signifie qu'il divisera les deux vues également dans le sens horizontal (ou en largeur).la source
la source
C'est la réponse parfaite à votre problème
la source
Remplacer
wrap_content
parfill_parent
.la source
la source