Относительное перекрытие текстовых изображений RelativeLayout

У меня довольно простая строка ListView:

<?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="wrap_content"
android:orientation="horizontal" >

<TextView
    android:id="@+id/tournament_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:textSize="25dp" />

<TextView
    android:id="@+id/tournament_winner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:textSize="25dp" />

</RelativeLayout>

Когда текст "@+id/tournament_name" длинный - он накладывается на один из "@+id/tournament_winner" и я не понимаю, почему.

Я пробовал использовать android:singleLine="false" безрезультатно. Я также пробовал использовать android:inputType="textMultiLine" как указано в документе: android:singleLine="false" устарел, но затем я получаю предупреждение: Attribute android:inputType should not be used with <TextView>: Change element type to <EditText>? так что здесь не хорошо.

Я также пробовал использовать android:ellipsize="end" но это не работает. Я предполагаю, что это потому, что текст в левом TextView ("@+id/tournament_name") недостаточно, чтобы заполнить всю ширину ListView (какой код здесь не посеял).

Я был уверен, что если я использую android:layout_width="wrap_content" два поля TextView не должны перекрываться.

Вот пример (см. Вторую строку):

enter image description here

Какие-нибудь дальнейшие идеи, как это можно исправить?

Ответ 1

    android:layout_toLeftOf="@id/tournament_winner" in First TextView.

Также установите android:maxLines="1" и Fix width for tournament winner потому что, когда его long название турнира can not см....

row.xml

<?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="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:id="@+id/tournament_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/tournament_winner"
        android:maxLines="1"
        android:text="NAMEEEEEEEEEEEEEEEEEEEEEEEEEEE"
        android:textSize="25dp" />

    <TextView
        android:id="@+id/tournament_winner"
        android:layout_width="wrap_content" android:layout_marginLeft="10dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="WINER"
        android:textSize="25dp" />

</RelativeLayout>

Ответ 2

Большое спасибо за ваш ответ - извините, мне потребовалось некоторое время, чтобы ответить. Я закончил использовать ваш android:layout_toLeftOf="@+id/tournament_winner" но оставил одну строку, а край слева остался неиспользованным, так как результат казался мне идеальным (надеюсь, что это также относится и к другим устройствам).

Одна вещь, хотя - в первом текстовом представлении (android:layout_toLeftOf="@+id/tournament_winner") мне пришлось использовать android:layout_toLeftOf="@+id/tournament_winner" а не android:layout_toLeftOf="@id/tournament_winner" - обратите внимание на добавленный +. По какой-то причине я получаю сообщение об ошибке с помощью android:layout_toLeftOf="@id/tournament_winner": Ошибка: ресурс не найден, который соответствует указанному имени... поэтому кажется, что это возможно и НЕОБХОДИМО определить ресурс во время вызова потому что система не знает об этом до того, как она была определена.

<?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="wrap_content"
android:orientation="horizontal" >

<TextView
    android:id="@+id/tournament_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/tournament_winner"            
    android:layout_alignParentLeft="true"        
    android:textSize="25dp" />

<TextView
    android:id="@+id/tournament_winner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"         
    android:layout_alignParentRight="true"
    android:textSize="25dp" />

</RelativeLayout>

Ответ 3

Вы можете использовать одиночный текстовый вид вместо двух и просто отображать обе строки в одном текстовом виде!