est-il possible de répartir uniformément les boutons sur toute la largeur d'un linearlayout android
J'ai un linéaire de la mise en page (orienté à l'horizontale), qui contient 3 boutons. Je veux les 3 boutons ont une largeur fixe et d'être répartie uniformément sur toute la largeur de la disposition linéaire.
Je peux gérer ce par la définition de la gravité de la linearlayout centre et puis en ajustant le rembourrage des boutons, mais cela fonctionne pour une largeur fixe et ne fonctionne pas pour la modification des dispositifs ou des orientations.
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:gravity="center">
<Button
android:id="@+id/btnOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="120dip"></Button>
<Button
android:id="@+id/btnTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="120dip"></Button>
<Button
android:id="@+id/btnThree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:width="120dip"></Button>
</LinearLayout>
- En double? stackoverflow.com/questions/3450561/...
- Chercher dans ce largeur Égale ImageViews en horizontal LinearLayout>
Vous devez vous connecter pour publier un commentaire.
Expansion sur fedj réponse, si vous définissez
layout_width
à0dp
et définir lalayout_weight
pour chacun des boutons à 1, la largeur disponible sera partagé à parts égales entre les boutons.Si vous ne voulez pas les boutons à l'échelle, mais d'ajuster l'espacement entre les touches (égale à l'espacement entre tous les boutons), vous pouvez utiliser les vues avec poids="1" qui va remplir l'espace entre les boutons:
Space
type de vue. Rend les choses un peu plus lisible.Vous pouvez l'utiliser avec du suivant.
Space
jusqu'à maintenantVous pouvez le faire en donnant à la fois
View
s unlayout_width
de0dp
et unlayout_weight
de1
:La façon dont android layout_weight fonctionne, c'est que:
match_parent
puis diviser le de l'espace qui est laissé dans le rapport de lalayout_weight
s. Ainsi, si vous avez donné le point de Vuelayout_weight="2"
etlayout_weight="1"
,la résultante de ratio de 2 pour 1,c'est : la première Vue d'obtenir les 2/3 de l'espace qui est à gauche et l'autre 1/3.C'est pourquoi si vous donnez
layout_width
une taille de0dp
la première étape n'a pas plus de sens puisque les deux points de Vue ne sont affectés à aucune espace. Alors seulement le deuxième point décide de l'espace de chaqueView
obtient, en donnant à laView
s l'espace que vous avez spécifié en fonction du rapport!Pour expliquer pourquoi
0dp
provoque l'espace à diviser de manière égale en fournissant un exemple qui montre le contraire: Le code ci-dessous aboutirait à quelque chose de différent depuisexample text
maintenant a une largeur qui est supérieure à0dp
parce qu'il awrap_content
au lieu de prise de l'espace libre à gauche de diviser moins de 100% parce que le texte prend de l'espace. Le résultat sera que de 50% de l'espace libre à gauche, mais le texte a déjà pris un peu d'espace de sorte que leTextView
aura bien plus de 50% de l'espace total.Bien, si vous avez exactement 3 boutons et si il est ok (ou encore) que les boutons extérieurs sont alignés à gauche et à droite, alors vous voudrez peut-être essayer un RelativeLayout qui est moins de frais généraux (dans de nombreuses situations).
Vous pouvez utiliser
layout_alignParentBottom
pour aligner tous les boutons avec le fond de la disposition. Utilisationlayout_alignParentLeft and Right
pour les boutons extérieurs etlayout_centerHorizontal
pour le bouton du milieu.Qui va bien travailler sur des orientations différentes et de tailles d'écran.
Vous devriez jeter un oeil à android:layout_weight attribut
Pour espacer uniformément deux boutons à l'horizontale linéaire de la mise en page, j'ai utilisé 3 LinearLayout objets d'agir comme des espaces qui vont être redimensionnées automatiquement. J'ai placé ces LinearLayout objets comme suit:
[] Button1 [] Bouton2 []
([] représente un LinearLayout objet utilisé pour l'espacement)
puis-je définir chacun de ces [] LinearLayout objets en poids à 1, et je reçois régulièrement espacés de boutons.
Espère que cette aide.
j'ai créé une Vue personnalisée DistributeLayout pour ce faire.
Je vous suggère d'utiliser LinearLayout est weightSum attribut.
L'ajout de la balise
android:weightSum="3"
à votre LinearLayout de la déclaration xml et ensuiteandroid:layout_weight="1"
à vos Boutons de résultat dans les 3 boutons sont uniformément distribués.Ceci peut être réalisé en attribuant
poids
à chaque ajout d'un bouton à l'intérieur du conteneur, très important pour définir l'orientation horizontale :ainsi, nous pouvons avoir dans notre appareil comme un résultat:
même si nous faisons tourner notre dispositif de la
poids
définies dans chaque bouton peut rolurile la elemenents uniformally le long du conteneur:Meilleure approche est d'utiliser TableLayout avec android:layout_width="match_parent" et dans les colonnes d'utiliser android:layout_weight="1" pour toutes les colonnes
Les réponses ci-dessus à l'aide de layout_didn fonctionne pas pour moi, mais la suite n'.
C'est la façon dont il regarde sur l'écran,
Au-dessus de toutes les réponses sont justes mais Dans un cas vous avez besoin d'visible et disparu de fonctionnalités, puis ce, de façon pragmatique, la méthode fonctionne bien
Le plus simple et le plus rapide, (mais pas le meilleur), c'est d'ajouter un TextView avec vide attribut de texte, à l'instar de ce
la couleur d'arrière-plan doit être la même à l'LinearLayout, alors vous pouvez utiliser la propriété padding, à l'instar de ce
ou tout ce que vous avez besoin.
Ici est un exemple.
Pondération égale, les enfants
Dans l'ordre pour que cela fonctionne dans le
LinearLayout
groupe affichage des valeurs d'attribut pourandroid:layout_width
etandroid:layout_height
doivent être identiques à"match_parent"
...En cercle, Tom, Tim, et Todd obtenir supposé être de 3 cm. Si vous voulez qu'il soit tactile en bas de l'écran, mettre comme Tom et Tim se supposé être de 1 centimètre, ce qui signifie qu'ils combinent virtuel mais son plan 2D est en bas. C'est affiché sur l'écran.