2010-11-21 45 views
2

J'ai un problème avec un RelativeLayout contenant deux TextView et un ImageView, que j'utilise pour afficher les articles dans un ListView. Les éléments sont correctement affichés sur Android 1.6, mais sur Android 2.2, les codes TextView se chevauchent.Chevauchement des éléments TextView dans RelativeLayout dans 2.2; pas de problème en 1.6

Voici une image qui montre la bonne et côte à côte un comportement incorrect:

alt text

Et voici le code source de mon RelativeLayout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="?android:attr/listPreferredItemHeight" 
android:padding="6dip"> 

<ImageView 
    android:id="@+id/icon" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:layout_alignParentTop="true" 
    android:layout_alignParentBottom="true" 
    android:layout_marginRight="6dip" 
    /> 

<TextView 
    android:id="@+id/secondLine" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:ellipsize="marquee" 
    android:singleLine="true" 

    android:layout_below="@+id/firstLine" 
    android:layout_toRightOf="@id/icon" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
/> 

<TextView 
    android:id="@+id/firstLine" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:textStyle="bold" 
    android:ellipsize="marquee" 
    android:singleLine="true" 

    android:layout_toRightOf="@id/icon" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
/> 

</RelativeLayout> 

Toute idée Je fais mal?

Merci beaucoup,

Philipp

Répondre

6

Voici à peu près la même réponse que celle d'Octavian, mais je ne pense pas qu'il l'ait vraiment bien expliqué.

Vous avez des instructions contradictoires dans votre fichier XML. Vous avez:

android:layout_alignParentBottom="true" 

dans vos deux affichages de texte. Vous avez également:

android:layout_below="@+id/firstLine" 

dans l'un des textviews. Essentiellement, vous essayez d'aligner au bas d'une mise en page relative et ensuite essayer de mettre quelque chose en dessous. Il n'y a rien "sous le fond".

Supprimer cette logique contradictoire et devrait résoudre votre problème.

+0

J'ai réussi à le résoudre avec la réponse d'Octavian. Merci pour votre explication détaillée! – Philipp

+0

Cela ne résoudra pas le problème car cela ne fonctionne tout simplement pas de cette façon. 'layout_below' va être ignoré quand vous définissez vos Vues comme ci-dessus. –

3

Je ne suis pas sûr à 100% si elle est le problème, mais sur votre TextView avec l'ID firstLine il semble que vous l'aligner à lui est en bas des parents comme vous avec TextView ID secondLine. Je suis sûr que vous vouliez dire android:layout_alignParentTop="true" à la place.

Je ne peux pas dire pourquoi il fonctionne sur Android 1.6 mais pas sur 2.2.

+0

Vous l'avez cloué, merci beaucoup! Je n'ai pas remarqué l'erreur. En utilisant android: layout_alignParentTop = "true" au lieu de android: layout_alignParentBottom = "true" a fait l'affaire. – Philipp