Перекрывающиеся элементы TextView в RelativeLayout в 2.2; нет проблем в 1.6 - PullRequest
2 голосов
/ 21 ноября 2010

У меня проблема с RelativeLayout, содержащим два TextView s и ImageView, которые я использую для отображения элементов в ListView.Элементы правильно отображаются на Android 1.6, но на Android 2.2 TextView s перекрываются.

Вот изображение, показывающее правильное и неправильное поведение рядом:

alt text

А вот исходный код моего 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>

Есть идеи, что я делаю неправильно?

Большое спасибо,

Philipp

Ответы [ 2 ]

6 голосов
/ 21 ноября 2010

Это в основном тот же ответ, что и у Октавиана, но я не думаю, что он на самом деле очень хорошо объяснил.У вас есть:

android:layout_alignParentBottom="true"

в обоих ваших текстовых представлениях.У вас также есть:

android:layout_below="@+id/firstLine"

в одном из текстовых представлений.По сути, вы пытаетесь выровнять нижнюю часть относительного макета, а затем пытаетесь поместить что-то под него.Ничто не «под дном».

Удалите эту противоречивую логику, и это должно решить вашу проблему.

3 голосов
/ 21 ноября 2010

Я не уверен на 100%, если это проблема, но на вашем TextView с идентификатором firstLine кажется, что вы выравниваете его с его родителями, как вы делаете с TextView ID secondLine. Я совершенно уверен, что вы хотели сказать android:layout_alignParentTop="true" вместо.

Я не могу сказать, почему он работает на Android 1.6, но не на 2.2.

...