2010-08-27 13 views
3

J'ai une disposition relative qui ressemble à ceci: alt textComment créer une mise en page de type colonne pour les lignes ListView?

Voici le code:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <TextView 
     android:id="@+id/nameText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="5dip" 
     android:layout_alignParentLeft="true" 
     android:text="Symbol" 
     /> 
    <TextView 
     android:id="@+id/priceText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:padding="5dip" 
     android:layout_toRightOf="@+id/nameText" 
     android:gravity="right"  
     android:text="100" 
    /> 
    <TextView 
     android:id="@+id/changeText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dip" 
     android:layout_toRightOf="@+id/priceText" 
     android:gravity="right"  
     android:text="1.3" 
     /> 
</RelativeLayout> 

Comment puis-je obtenir le nom de l'entreprise pour aligner à côté du numéro 1.3?

Répondre

4

Suite à la réponse de Mayra, voici une façon de le faire en utilisant layout_weight:

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <TableRow> 
     <TextView 
      android:id="@+id/left_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="left|center_vertical" 
      android:padding="5dip" 
      android:layout_weight="0" 
      android:text="Code" 
      /> 
     <TextView 
      android:id="@+id/middle_text" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="right|center_vertical" 
      android:padding="5dip" 
      android:layout_weight="1" 
      android:text="Name of Company" 
      />  
     <TextView 
      android:id="@+id/right_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="5dip" 
      android:gravity="right|center_vertical" 
      android:layout_weight="0"  
      android:text="1.3" 
      /> 
    </TableRow> 
</TableLayout> 
+0

comme toujours, rock solide réponse! est-ce que avoir un tablelayout au lieu d'une mise en page relative affecte la performance puisque c'est dans une listview? –

+0

Hmm, j'ai peur de ne pas pouvoir vraiment aider beaucoup sur ce front. Je ne suis pas sûr de savoir comment cela affecterait les performances. Je ne pense pas que cela causerait beaucoup de différence. – kcoppock

1

Il est clair pas exactement ce que vous voulez qu'il se passe, mais voici quelques options:

Si vous voulez des colonnes à aligner sur les lignes, vous pouvez envisager d'utiliser un TableLayout.

Vous pouvez également utiliser l'attribut "weight" pour affecter le pourcentage de l'écran que prend chaque TextView. Si vous affectez une valeur de 1 à la vue de texte la plus à gauche et 0 à l'autre 2, l'affichage de texte de gauche occupera tout l'espace supplémentaire et poussera ainsi l'affichage de texte du milieu vers la droite. Cela entraînera probablement l'affichage du texte au milieu à bien aligné. Vous pouvez donner à gauche 20%, le milieu 50% et le droit 30% en assignant 2, 5 et 3.

Vous pouvez également définir une taille explicite pour les vues de texte (en dpi), mais cela pourrait être problématique avec des écrans de tailles différentes.

+0

oui, je veux que le nom de l'entreprise soit aligné à droite à côté du prix –

+0

pouvez-vous montrer dans le code, comment faire la disposition de la table? J'ai inséré une ligne de table et maintenant les textviews s'empilent les uns sur les autres verticalement et non horizontalement. –

+0

Voir bonjour tableLayout: http://developer.android.com/guide/tutorials/views/hello-tablelayout.html Il existe de bons tutoriels pour à peu près tous les types de disposition ou de vue. –

0

Je suis d'accord avec Mayra! Utilisez TableView, vous obtiendrez la mise en forme que vous cherchez ainsi que la quasi-totalité des fonctionnalités d'un ListView (fonctionnalité de recherche et de liste)