2010-11-21 5 views
2

Ich habe ein Problem mit einer RelativeLayout enthält zwei TextView s und eine ImageView, die ich für die Anzeige von Elementen in einem ListView verwenden. Die Elemente werden auf Android 1.6 korrekt angezeigt, aber auf Android 2.2 überlappen sich die TextView s. HierÜberlappende TextView-Elemente in RelativeLayout in 2.2; Kein Problem in 1.6

ist ein Bild, das die richtige und falsche Verhalten Seite an Seite zeigt:

alt text

Und hier ist der Quellcode meiner 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> 

Jede Idee, was Ich mache falsch?

Vielen Dank,

Philipp

Antwort

6

ist im Grunde die gleiche Antwort wie Octavians, aber ich glaube nicht, dass er es tatsächlich sehr gut erklärt.

Sie haben widersprüchliche Aussagen in Ihrer XML-Datei. Sie haben:

android:layout_alignParentBottom="true" 

in Ihren beiden Textansichten. Sie haben auch:

android:layout_below="@+id/firstLine" 

in einer der Textansichten. Im Wesentlichen versuchen Sie, sich an der Unterseite eines relativen Layouts auszurichten und dann etwas darunter zu platzieren. Es gibt nichts "unter dem Boden".

Entfernen Sie diese widersprüchliche Logik und es sollte Ihr Problem lösen.

+0

Ich konnte es mit Octavians Antwort lösen. Vielen Dank für Ihre ausführliche Erklärung! – Philipp

+0

Es wird das Problem nicht lösen, da es einfach nicht so funktioniert. 'layout_below' wird ignoriert, wenn Sie Ihre Ansichten wie oben definieren. –

3

ich nicht 100% sicher bin, ob es das Problem ist, aber auf Ihrem TextView mit der ID firstLine es scheint, wie Sie es zu seinen Eltern Boden wie Sie ausrichten tun mit TextView ID secondLine. Ich bin mir ziemlich sicher, dass Sie stattdessen android:layout_alignParentTop="true" sagen wollten.

Ich kann nicht sagen, warum es auf Android 1.6, aber nicht auf 2.2 funktioniert. Diese

+0

Sie haben es genagelt, vielen Dank! Ich habe den Fehler nicht bemerkt. Mit Android: layout_alignParentTop = "true" anstelle von Android: layout_alignParentBottom = "true" hat den Trick gemacht. – Philipp