2013-07-31 4 views
0

J'ai essayé quelques approches différentes avec les poids, mais évidemment, il ya une mauvaise compréhension flagrante de la façon d'obtenir ce que je vise ici. Simplement ce que je tente de faire, c'est que ImageView occupe 1/3rd de l'écran sur toute la largeur, tout en ayant la disposition de textViews prendre le reste des 2/3rds de l'écran sur toute la largeur. Ce qui finit par avoir comme je l'essaye et le manipule cependant, c'est que l'ImageView est petit et ne prend pas presque l'espace qu'il devrait être. J'ai été déconner avec essayer d'obtenir les dispositions correctes toute la matinée.Malentendu poids Android

La réponse ci-dessous m'a conduit à la suivante qui était ce qui se passait dans ce cas:

0dip layout dimensions

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

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:weightSum="3"> 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/skeleton" 
      android:layout_weight="1"/> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:layout_weight="2"> 

      <EditText 
       android:id="@+id/editText1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:ems="10" /> 

      <EditText 
       android:id="@+id/editText2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:ems="10" /> 

     </LinearLayout> 

    </LinearLayout> 

</LinearLayout> 
+0

duplication possible de [Android Layout Weight] (http://stackoverflow.com/questions/4986861/android-layout-weight), spécifiquement cette réponse: http://stackoverflow.com/a/4987097/752320 – Geobits

Répondre

3

Dans les dispositions linéaires, il existe une astuce pour faire fonctionner les poids - vous devez définir la dimension pour appliquer le poids à zéro.

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:src="@drawable/display_pro_skeleton" 
    android:layout_weight="1"/> 

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:layout_weight="2"> 

    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:ems="10" /> 

    <EditText 
     android:id="@+id/editText2" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:ems="10" /> 

</LinearLayout> 

Quelque chose comme ça.

+0

Ah oui, cela m'a indiqué dans la bonne direction. Je vous remercie! –

0

poids sont un peu contre-intuitif parfois. Essayez d'utiliser des décimales pour que le grand soit de .66 et le petit de .34. EDIT: Alors j'ai juste regardé un peu plus à votre xml et j'ai réalisé que c'est probablement de la largeur et les hauteurs que vous utilisez. Pour de meilleurs résultats avec des poids, vous devez utiliser "fill_parent".

1

Il n'y a rien de vraiment compliqué à propos des poids. L'utilisation de poids dit "mesurez toutes les vues dans ma disposition, puis prenez l'espace restant et divisez-le en fonction de leurs poids". Les poids n'affectent que l'espace restant. C'est pourquoi le réglage des dimensions de toutes les vues à 0dp fonctionne, car dans ce cas, tous l'espace est de l'espace restant.

+0

C'était la partie piège. J'étais sous l'hypothèse que 'wrap_content' était similaire à la façon dont '0dip' fonctionnerait. Qu'il attendait l'entrée d'un poids ou de dimensions de la source comme la largeur/hauteur de l'image. –

+1

Oh je vois. Non, wrap_content lui assigne juste la taille minimum qui pourrait correspondre à son contenu. Content d'entendre que tout est éclairci maintenant. – yarian