Относительное перекрытие текстовых изображений 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
Вы можете использовать одиночный текстовый вид вместо двух и просто отображать обе строки в одном текстовом виде!