36 votes

android: question du débutant

Quand j'ai ce qui suit, il montre que la mise en page supérieure avec quatre couleurs a une surface beaucoup plus petite que la zone de mise en page inférieure.

Selon http://developer.android.com/guide/topics/ui/layout-objects.html#linearlayout , l'ajout de plus à layout_weight devrait augmenter la surface, mais le code diminue.

Toute aide serait appréciée.

Merci d'avance.

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

  <LinearLayout
      android:orientation="horizontal"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="4">
      <TextView
          android:text="red"
          android:gravity="center_horizontal"
          android:background="#aa0000"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="3"/>
      <TextView
          android:text="green"
          android:gravity="center_horizontal"
          android:background="#00aa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="blue"
          android:gravity="center_horizontal"
          android:background="#0000aa"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
      <TextView
          android:text="yellow"
          android:gravity="center_horizontal"
          android:background="#aaaa00"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:layout_weight="1"/>
  </LinearLayout>

  <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1">
    <TextView
        android:text="row one"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row two"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row three"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:text="row four"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
  </LinearLayout>

</LinearLayout>
 

41voto

kbriggs Points 428

J'ai eu le même problème. L'astuce consiste à ne pas utiliser "wrap_content" ou "fill_parent" pour les contrôles auxquels vous attribuez une pondération. Définissez plutôt layout_height sur 0px (lorsque vous vous trouvez dans une disposition verticale), puis les contrôles enfants seront proportionnés aux valeurs de poids.

33voto

pedroca Points 41

Si vous obtenez l'erreur "Taille suspecte: la vue sera invisible, probablement destinée à être mise en page ...", n'oubliez pas de définir le paramètre correct sur "android: orientation" dans parent

10voto

Janusz Points 52607

Si vous utilisez fill_parent dans un LinearLayout, la présentation prendra autant d’espace que possible et tous les éléments de présentation définis ultérieurement devront traiter de l’espace restant.

Si vous définissez la taille de tous les deux LinearLayouts sur wrap_content, le poids devrait fonctionner comme indiqué.

9voto

trgraglia Points 3196

Je sais c'est tard mais j'espère que cela aide les gens à:

Utiliser android:weightSum sur le parent. Voici un lien pour le dev docs.

http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:weightSum

Utiliser android:weightSum de 1.0 sur le parent et ensuite utiliser 0.x sur l'enfant vues avec android:layout_weight pour l'utilisation que le ratio de l'espace.

8voto

Ryan Conrad Points 4635

S'appuyant sur ce qui Janusz dit, si vous utilisez fill_parent, vous pouvez ensuite définir android:layout_weight de "diviser" la "région" entre plusieurs éléments de mise en page.

Le layout_weight ne pas augmenter la surface, il augmente le "droit" de la région. mais c'est aussi par rapport à la mère. Si vous avez un parent avec un layout_height=fill_parent, avec un layout_weight=0 et le parent qui a un enfant avec le même réglage de layout_weight=1 à l'un des enfants n'a pas d'incidence sur le parent.

À la fois le parent et l'enfant, le prendre jusqu'à 50% de la superficie qu'ils peuvent remplir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X