Android relative de la mise en page avec le bouton de largeur à l'aide de poids
J'ai utilisé le layout_weight
paramètre pour définir la largeur des boutons à 70% du total de la largeur de la présentation, mais il semble que je suis en manque quelques détails importants afin de le faire fonctionner.
(Une autre solution serait de travailler avec display.getWidth()
de la programmation, mais ça ne fonctionne pas non plus, parce que je ne sais pas ce que mes .xml doit regarder comme Si je choisis de régler la largeur avec button.setWidth()
)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_weight="1.0">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="15px"
android:id="@+id/userVersionTextViewNew"
android:gravity="center"
android:layout_centerVertical="true"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="15px"
android:gravity="center"
android:layout_above="@id/userVersionTextViewNew"
android:id="@+id/userSoftSerialNumberTextView"/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/logo_200"
android:layout_above="@id/userSoftSerialNumberTextView"
android:layout_centerHorizontal="true"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="15px"
android:gravity="center"
android:layout_below="@id/userVersionTextViewNew"
android:id="@+id/dummyTextView"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/loginButton"
android:text="Σύνδεση"
android:layout_centerHorizontal="true"
android:layout_below="@id/dummyTextView"
android:layout_weight="0.7"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/demoLoginButton"
android:text="Δοκιμαστική χρήση"
android:layout_centerHorizontal="true"
android:layout_below="@id/loginButton"
android:layout_weight="0.7"/>
</RelativeLayout>
Semble que cela peut vous aider: stackoverflow.com/questions/4961355/...
sur une note de côté, il n'est pas recommandé d'utiliser px avec textsize au lieu d'utiliser sp
je vous remercie. Je vais garder cela à l'esprit! 🙂
sur une note de côté, il n'est pas recommandé d'utiliser px avec textsize au lieu d'utiliser sp
je vous remercie. Je vais garder cela à l'esprit! 🙂
OriginalL'auteur iCantSeeSharp | 2011-10-21
Vous devez vous connecter pour publier un commentaire.
Essayer..
Pour obtenir à la fois le bouton de la même taille c'est à dire 70% de la largeur de l'écran, il suffit de changer le paramètre de largeur de bouton pour android:layout_width="0dp"
Bien que cette réponse est valide, le code ne permet pas d'expliquer lui-même. Voir ci-dessous pour une meilleure réponse globale, y compris un code et une explication de pourquoi cela fonctionne.
OriginalL'auteur
Le Problème
Vous ne pouvez pas utiliser la layout_weight paramètres sur un RelativeLayout. Ce sont des paramètres à partir de la LinearLayout. Je vais vous donner quelques informations supplémentaires sur les différences plus tard ci-dessous. Mais d'abord, à propos de la solution de cette question
Une Solution
Utiliser un LinearLayout où vous pouvez positionner des éléments dans une rangée avec une répartition du poids. N'oubliez pas d'utiliser le 0dp largeur lors de l'ajout d'layout_weights si! L'exemple ci-dessous montre la répartition du poids de 70/30.
Tout cela dans le RelativeLayout vous avez déjà eu dans votre code. Le reste de cette réponse de l'arrière-plan de l'information que tout le monde à ces questions, il faut lire pour comprendre ce qu'ils font.
RelativeLayout
Chaque fois que vous commencez avec une mise en page avec plus d'un élément, je vous conseille de préférer un RelativeLayout en faveur de l'Linéaire chose. Le RelativeLayout est très puissant et permet de positionner les éléments en relation les uns aux autres (leftOf, ci-dessous, ...). Dans la plupart des cas, c'est plus que ce que vous aurez jamais besoin.
Un exemple de le développement android document (croyez-moi, c'est tous là):
LinearLayout
Le LinearLayout peut paraître très capable, mais aussi dans le but d'obtenir tout trié avec seulement Linéaires, vous aurez plus de chances de commencer l'imbrication de ces dispositions. Et c'est là où il est laid performance sage.
Encore un exemple de le développement android documentation.
OriginalL'auteur
Je ne pense pas que
layout_weight
fonctionne à l'intérieur d'unRelativeLayout
. Peut-être que vous devriez ajouter unLinearLayout
à l'intérieur de laRelativeLayout
et l'utilisationlayout_weight
à l'intérieur.Également lors de l'utilisation
layout_weight
vous devez habituellement avoir la largeur ou la hauteur de l'objet défini comme0dp
, donc dans votre cas comme ceci:OriginalL'auteur
Je sais que cette question est ancienne, mais juste pour quelqu'un qui recherche une solution:
Google a présenté la nouvelle API appelée android.de soutien.pour cent
PercentRelativeLayout
exactement votre cas:OriginalL'auteur
layout_weight, les travaux sur le LinearLayout en tant que parent. je pense donc que le problème se situe là. vous avez à utiliser un mélange de tous les linéaires de mise en page et relative mises en page pour réaliser ce dont vous avez besoin.
OriginalL'auteur
Je pense que vous ne devez pas définir
android:layout_weight="1.0"
dans Relative disposition tag, si vous souhaitez définir la longueur de bouton, puis d'autres le"wrap_content"
android:layout_weight ne fonctionne que pour les LinearLayout, pas RelativeLayout
OriginalL'auteur
@Hcpl correctement mentionné dans sa réponse:
Oui, il a raison! Mais pensez - impact négatif sur les performances causés par des mises en page.
Avec l'introduction de ConstraintLayout, vous pouvez résoudre votre problème sans imbriquée LinearLayout. Vous venez de coller deux verticales des lignes directrices de 15% et 85% des marges et de la place des boutons entre eux.
Voici la mise en page du code source:
Comme un résultat que vous obtenez ce point de vue:
Vous pouvez trouver plus de détails en La conception d'interfaces avec ConstraintLayout.
OriginalL'auteur
Essayer Cela,
non, je veux dire de 0,75...vous voulez que 70% de votre bouton, puis..cela donnera à 70% pour les 2 dernières bouton de repos et de 30% à 4 texte et image..juste essayer et de me dire..
Encore, les boutons sont à 100% de la largeur et de plus, ils occupate la moitié de ma totale de la fenêtre, plus de 50% du contenu de l'onglet.
le code ci-dessus est de définir le poids de la hauteur ..pas pour la largeur..comment voulez-vous regarder le xml, si possible, post image ci-dessus
Dans mon premier post, j'ai écrit sur le bouton de largeur de 70% de la largeur totale. Et ma méthode ne pouvait pas travailler, il est donc à propos de la résolution de ce problème.
OriginalL'auteur
Tout d'abord, ajouter le param
android:weightSum="1.0"
pour le conteneur (dans ce cas, l'ajouter à RelativeLayout).Ensuite, définir le poids de chacun de leurs enfants. Par exemple, si vous ajoutez un bouton de cette
le bouton de 50% de la largeur totale.
L'éditeur xml dans eclipse, de la marque avec un message d'erreur.
Désolé, c'est "0dp" ou "0px" ou similaire... Vous devez définir ce paramètre params à tous les enfants
Tous les éléments ne sont pas visibles de cette façon..
La somme de tous les layout_weight doit être égale à layout_weightSum
OriginalL'auteur