Android Mise en page - layoutweight et weightsum
J'ai besoin de construire une mise en page avec l'ensemble des linéaires mises en page. La mise en page doit occuper un pourcentage défini de l'écran. J'ai besoin de le faire pour avoir un look similaire dans tous les dispositifs.
Question:
J'ai un textview en haut à droite de mise en page (couleur verte de la boîte ). Chaque fois que j'ajoute des données dans le textview il perturbe toute la mise en page comme indiqué ci-dessous dans la 2ème image. Mais j'ai besoin d'avoir les données ajuste automatiquement lorsqu'il atteint l'extrémité droite de l'écran/mise en page.
Merci de m'aider à résoudre ce problème. Merci D'Avance
Image1 - vue Graphique que par le XML indiqué ci-dessous
Image2 - Montre comment la mise en page change automatiquement, lorsque j'ajoute des données dans le textView
xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:orientation="vertical"
android:weightSum="100">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="91"
android:weightSum="100">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="40"
android:weightSum="235">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:background="#ff0000"
android:layout_weight="100">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffff00"
android:layout_weight="45">
<ViewFlipper
android:id="@+id/view_flipper"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tvItemName" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
</LinearLayout>
</ViewFlipper>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffff"
android:layout_weight="90">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="60"
android:weightSum="100">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="30"
android:background="#00ab00"
android:weightSum="100">
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:textColor="#000000"
android:text="Test data" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#cd00ab"
android:layout_weight="70">
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ab0000"
android:layout_weight="9">
</LinearLayout>
</LinearLayout>
OriginalL'auteur iappmaker | 2013-03-29
Vous devez vous connecter pour publier un commentaire.
Utiliser ce fichier XML. J'ai fait les modifications pour vous.
Il semble bien pour moi. découvrez ci-dessous l'instantané.
Vérifier mon édité réponse. Essayez-le et laissez-moi savoir. Un linearlayout début et la balise de fin est manquante lorsque j'ai collé.
Merci.. c'est bien maintenant.. le texte n'est pas mise à l'échelle dans différentes tailles. tous les pointeurs s'il vous plaît. Je ne veux pas d'une mise en page distincte pour les différents périphériques picpaste.com/4-CY0Qb7o0.png
android:textSize ="XXsp" ici XX est certaine valeur numérique. une seule mise en page ne peut pas s'adapter à tous les appareils. son jusqu'à vous. et si vous avez trouvé ma réponse utile de le marquer comme accepter. heureux de codage.
OriginalL'auteur SKK
Commencer votre
layout_width
oulayout_height
comme 0dp au lieu dewrap_content
. (Si c'est dans une disposition verticale,layout_height
devrait être 0dp; si c'est dans une mise en page horizontale,layout_width
devrait être 0dp)La
layout_weight
décrit comment répartir les restant espace après lalayout_width
s/layout_height
s ont été assignés.Noter que
wrap_content
ne veut pas dire "faire de l'habillage de texte"; elle permet de définir la dimension de la "préférée" de la dimension de la vue.Je suis d'accord avec
If it's in a vertical layout, layout_height should be 0dp; if it's in a horizontal layout, layout_width should be 0dp
. Avez-vous trouvé un contre-exemple pour cela?Un contre-exemple serait un cas où vous voulez être certain d'un composant a toujours un certain montant minimum d'espace. Si vous avez deux composants de voir où l'on est toujours plus important que de voir les autres, cela peut être utile. Toutefois, cela signifie que vous êtes en train de penser sur les composants dans une zone où les deux peuvent ne pas être visibles, et vous devriez vraiment envisager une autre approche de l'INTERFACE utilisateur, peut-être un ScrollView, les onglets, ou de séparer les activités/fragments.
OriginalL'auteur Scott Stanchfield