2010-10-02 7 views
1

Je suis en train de développer ce que je pensais être une simple mise en page de listview, mais j'ai du mal à aligner correctement mes vues. Il y a 4 TextViews utilisant tous layout_weight dans un LinearLayout pour se dimensionner correctement. Ce que je ne peux pas comprendre, cependant, est comment les aligner de manière cohérente afin que chaque TextView commence dans la même position que celle ci-dessus et en dessous.Android Listview Row Layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:background="#AAAAAA88"> 

    <TextView 
     android:id="@+id/quality" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="2" 
     android:layout_gravity="center_vertical|right" 
     android:textColor="#ffffff" 
     android:padding="5px" 
    /> 

    <TextView 
     android:id="@+id/route_name" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="3" 
     android:layout_gravity="center_vertical|right" 
     android:textColor="#ffffff"  
     android:padding="5px"   
    /> 

    <TextView 
     android:id="@+id/route_grade" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:layout_gravity="center_vertical|right" 
     android:textColor="#ffffff"  
     android:padding="5px"   
    /> 

    <TextView 
     android:id="@+id/route_distance" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:layout_gravity="center_vertical|right" 
     android:textColor="#ffffff"  
     android:padding="2px"   
    />   

</LinearLayout> 

Mes tentatives d'utiliser la balise de gravité ne semblent pas fonctionner. LinearLayout est-il la mauvaise approche ici?

En édition, je fais des progrès en utilisant des valeurs de largeur spécifiques dans les creux. Maintenant, pour tester si elle semble la même sur différents écrans.

Répondre

0

La gravité distribue le reste de l'espace disponible après des contraintes minimales et non l'espace total. Par conséquent, alignez les différentes lignes au-dessus et au-dessous pour vous assurer que l'espace restant est égal sur chaque ligne. Une bonne façon d'y arriver consiste à coder en dur l'espace minimum doit chaque élément:

android:layout_weight="2" 
android:layout_width="1dip" 

rendre chaque TextView sur chaque ligne de largeur 1dip et diviser l'espace restant en fonction du poids.

0

vous pouvez essayer d'utiliser RelativeLayout. Essayez 4 des TextViews à placer relativement, 3 peuvent avoir une largeur fixe dans dp et le 4ème peut prendre le reste de l'espace disponible. De cette façon, chaque textview commencera à une position fixe à chaque fois.

quelque chose comme:

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

<TextView 
    android:id="@+id/text_1" 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:gravity="left" 
    android:padding="8dp" 
    android:text="Text 1"/> 
<TextView 
    android:id="@+id/text_2" 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/text_1" 
    android:layout_toLeftOf="@+id/text_1" 
    android:gravity="left" 
    android:padding="8dp" 
    android:text="Text 2"/> 
<TextView 
    android:id="@+id/text_3" 
    android:layout_width="60dp" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/text_1" 
    android:layout_toLeftOf="@+id/text_2" 
    android:gravity="left" 
    android:padding="8dp" 
    android:text="Text 3"/> 
<TextView 
    android:id="@+id/text_4" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/text_1" 
    android:layout_toLeftOf="@+id/text_3" 
    android:layout_alignParentLeft="true" 
    android:gravity="left" 
    android:padding="8dp" 
    android:text="Text 4"/> 

</RelativeLayout>