Android Listview форматирует текст

#android

#Android

Вопрос:

можно ли отформатировать текст элемента в Listview, чтобы он выглядел, например, так:

часть строки выделена жирным шрифтом, а часть — нет

Спасибо

Комментарии:

1. вы используете стандартные адаптеры или пользовательский адаптер для просмотра списка?

Ответ №1:

Да, вам просто нужно иметь два разных textview, один для выделенного жирным шрифтом текста, а другой для выделенного текста. Таким образом, у вас будет макет для каждой строки, который выглядит следующим образом:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="horizontal"
>
   <TextView android:id="@ id/bold_field"
     android:layout_width="wrap_content"
     android:layout_height="fill_parent"
     android:textStyle="bold"
   />
   <TextView android:id="@ id/non_bold_field"
     android:layout_width="wrap_content"
     android:layout_height="fill_parent"
   />
</LinearLayout>
  

Затем вы должны использовать SimpleAdapter для сопоставления соответствующих фрагментов строки с каждым TextView. Если вы хотите, чтобы строка выглядела бесшовной, вам, вероятно, придется повозиться с серьезностью текстовых представлений.

Комментарии:

1. но… Возможно, я должен попробовать. Мне понравился ListView, но это кажется единственным способом

2. Это не так уж плохо, если подумать. 🙂

3. хорошо, я не хочу тратить время на его попытки, а затем обнаруживаю, что не могу использовать его из-за «чего-то»;) Так что, чтобы быть уверенным, он создает что-то с макетом, похожим на таблицу HTML? <таблица><tr><td></td><td></td></tr></таблица>. Каждый TextView похож на <td> в каждом <tr> ? Надеюсь, это не так безумно сложно 🙂

Ответ №2:

Вот способ форматирования ваших строк..

 <?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="part_bold"><b>%1$s</b> %2$s</string>
</resources>

Resources res = getResources();
String part_bold_text = String.format(res.getString(R.string.part_bold), bold_string, normal_string);
  

строка в xml имеет 2 аргумента, один выделен жирным шрифтом, другой — обычный. используйте это, чтобы получить строку ( part_bold_text ), часть которой выделена жирным шрифтом, а часть — обычным шрифтом.

HTH.

Комментарии:

1. Разве это не предполагает, что строки являются статическими и находятся в файле ресурсов xml?

2. Это не работает. Форматирование является нормальным, когда я помещаю эту строку в Listview