Страница 1 из 1
ListView: несколько строк в одном элементе
Добавлено: 26 июл 2013, 05:03
Idol
Есть список, в котором каждый элемент использует следующий формат:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:measureWithLargestChild="true"
android:paddingBottom="5dip"
android:paddingTop="5dip" >
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="5dip"
android:ellipsize="end"
android:layout_weight="1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="5dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_gravity="right"
/>
</LinearLayout>
Вопрос: как сделать, чтобы когда в text1 слишком длинный текст, текст переносился на вторую строку, а не оканчивался троеточием, как сейчас?
Re: ListView: несколько строк в одном элементе
Добавлено: 26 июл 2013, 07:56
rezak90
меньше копипастом заниматься нужно, если копируете то читайте хотя бы за что отвечает каждый атрибут, за ставку троеточия отвечает android:ellipsize="end"
Re: ListView: несколько строк в одном элементе
Добавлено: 27 июл 2013, 01:39
Idol
rezak90 писал(а):меньше копипастом заниматься нужно, если копируете то читайте хотя бы за что отвечает каждый атрибут, за ставку троеточия отвечает android:ellipsize="end"
Похоже, я опять спросил как то не так

.
Я понимаю, что делает данный скрипт.
Мне надо, чтобы текст переносился, создавая второю строчку, а не обрывался (как в случае, если я уберу ellipsize).
Re: ListView: несколько строк в одном элементе
Добавлено: 27 июл 2013, 01:55
Foenix
за это отвечает параметр wrap_content - Сворачивать содержимое, переносить на другую строчку.
Re: ListView: несколько строк в одном элементе
Добавлено: 29 июл 2013, 06:22
Idol
Foenix писал(а):за это отвечает параметр wrap_content - Сворачивать содержимое, переносить на другую строчку.
Не уловил, и что же надо изменить в данном примере, чтобы переносилось?
Re: ListView: несколько строк в одном элементе
Добавлено: 29 июл 2013, 08:32
Foenix
Если установлен этот парамет по высоте, то содержимое будет переноситься на другую строчку. При этом нужно установить, как-то зафиксировать ширину объекта.
Если ты уберешь параметр (с эллипсом) то должно переноситься.
А вот за второй текствью - не уверена.
У тебя на первый LinearLayout не ругается эклипс? там вообще-то не установлена его ориентация, поэтому я не знаю как у тебя будут эти вьюшки вообще располагаться.
Re: ListView: несколько строк в одном элементе
Добавлено: 30 июл 2013, 07:41
Idol
Foenix писал(а):Если установлен этот парамет по высоте, то содержимое будет переноситься на другую строчку. При этом нужно установить, как-то зафиксировать ширину объекта.
Если ты уберешь параметр (с эллипсом) то должно переноситься.
А вот за второй текствью - не уверена.
У тебя на первый LinearLayout не ругается эклипс? там вообще-то не установлена его ориентация, поэтому я не знаю как у тебя будут эти вьюшки вообще располагаться.
Один из вариантов. Не работает, просто обрезает строку.
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="5dip"
android:paddingTop="5dip" >
<TextView
android:id="@android:id/text1"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="5dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:width="30dp" />
<TextView
android:id="@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="5dip"
android:layout_weight="0"
android:gravity="right"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Здесь человек хочет, как раз наоборот, чтобы не переносило.
Может проблема, в том что это кастомный адаптер и где там надо, что-то подкрутить?
Горизонтальная ориентация по умолчанию, так что работает без проблем (в этой части).
Re: ListView: несколько строк в одном элементе
Добавлено: 30 июл 2013, 08:39
Mikhail_dev
Может еще один LinearLayout нужен? Такая конструкция, к примеру, не обрезает параметр tvPlaceTitle
[syntax=xml]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="
http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tvPlaceTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text=""
android:textSize="20sp">
</TextView>
<TextView
android:id="@+id/tvPlaceAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:textSize="14sp"
android:text="">
</TextView>
</LinearLayout>
</LinearLayout>
[/syntax]
Re: ListView: несколько строк в одном элементе
Добавлено: 30 июл 2013, 14:52
Foenix
не xml а какая-то ерунда, вот честно, что за ширина такая 30дп? И зачем тебе параметр width?
Сотри все это и сделай заново.
Или хотя бы покажи рисунком - какого расположения этих двух несчавстных textview ты хочешь добиться.
Re: ListView: несколько строк в одном элементе
Добавлено: 31 июл 2013, 02:58
Idol
Спасибо no--, но твой совет не помог.
Заработало только при следующем раскладе:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="5dip"
android:paddingTop="5dip" >
<TextView
android:id="@+id/textName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="5dip"
android:layout_weight="1"
android:maxLines="3"
android:scrollHorizontally="false"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/textTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center_vertical"
android:layout_marginRight="5dip"
android:layout_weight="0"
android:gravity="right"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Важные строки:
Код: Выделить всё
android:maxLines="3"
android:scrollHorizontally="false"
Всем спасибо за участие и наводки.
Re: ListView: несколько строк в одном элементе
Добавлено: 13 авг 2013, 01:56
Idol
Idol писал(а):Есть список, в котором каждый элемент использует следующий формат:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:measureWithLargestChild="true"
android:paddingBottom="5dip"
android:paddingTop="5dip" >
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="5dip"
android:ellipsize="end"
android:layout_weight="1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="5dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_gravity="right"
/>
</LinearLayout>
Вопрос: как сделать, чтобы когда в text1 слишком длинный текст, текст переносился на вторую строку, а не оканчивался троеточием, как сейчас?
Может кому пригодится. Этот код будет работать только на старых версиях, чтобы работал в новых нужно добавить
Re: ListView: несколько строк в одном элементе
Добавлено: 13 авг 2013, 09:16
Mykola
Дык при таком раскладе)), больше чем 3 строки он у тебя не покажет (остальной текст обрежет). Сделай 2 столбика LinearLayout и растяни TextView по высоте и ширине.
Re: ListView: несколько строк в одном элементе
Добавлено: 14 авг 2013, 01:48
Idol
Mykola писал(а):Дык при таком раскладе)), больше чем 3 строки он у тебя не покажет (остальной текст обрежет). Сделай 2 столбика LinearLayout и растяни TextView по высоте и ширине.
А мне больше и не надо, а другие могут указать хоть 33, если требуется. Это не означает, что всегда будет 33 строки.
Re: ListView: несколько строк в одном элементе
Добавлено: 14 авг 2013, 01:58
Idol
Idol писал(а):Idol писал(а):Есть список, в котором каждый элемент использует следующий формат:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:measureWithLargestChild="true"
android:paddingBottom="5dip"
android:paddingTop="5dip" >
<TextView
android:id="@android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginLeft="5dip"
android:ellipsize="end"
android:layout_weight="1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_marginRight="5dip"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_gravity="right"
/>
</LinearLayout>
Вопрос: как сделать, чтобы когда в text1 слишком длинный текст, текст переносился на вторую строку, а не оканчивался троеточием, как сейчас?
Может кому пригодится. Этот код будет работать только на старых версиях, чтобы работал в новых нужно добавить
Уточнение.
К сожаление, данный скрипт не будет работать во всех версиях. Причем результат не предсказуем. Скажем, у меня работает в 2.3 и 4.2 (хотя не во всех случаях), а в 4.0 не пашет как надо. Это очередной
баг. Хотя вроде они его пофиксили недавно (23.06.2013). Может мне мой софт надо обновить, однако проверял на реальном телефоне со всеми официальными обновлениями.
Решение проблемы (надеюсь временное), добавить устаревшую инструкцию :