Intereting Posts
Это приложение не имеет атрибута отладки, включенного в его манифесте Вызвать общедоступный метод в классе Activity из другого класса? Android: как изменить стиль редактирования текста? Обратный звонок Android Marshmallow, когда пользователь отменяет разрешения от настроек? Как обрезать изображения с камеры Почему Jenkins Android Emulator Plugin воссоздает мои снимки эмулятора в каждой сборке? Android-эмулятор: как отслеживать сетевой трафик? Dagger 2 и android Studio: работают, но не могут видеть созданные классы Инструменты для создания AnimatedVectorDrawable NoClassDefFoundError при использовании proguard Настройки Android: как загрузить значения по умолчанию, когда пользователь не использовал экран настроек? Tint bitmap в списке слоев Как изменить стиль андроида «принудительно закрыть окно»? Изменить цвет внутри strings.xml Устройства «Visual Studio Emulator для Android» не указаны в Android Device Monitor

Отображение форматированной строки в формате HTML

Мне нужен пример того, как отображать строки, которые я обозначил простым html, в TextView. Я нашел «Spanned fromHtml (String source)», но я не знаю, как подключить его к моему java-коду.

Вот моя Java:

package com.SorenWinslow.TriumphHistory; import android.app.ListActivity; import android.os.Bundle; import android.widget.ArrayAdapter; public class TriumphHistory extends ListActivity { String[] HistoryList; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ArrayAdapter<String> adapter; HistoryList = getResources().getStringArray(R.array.history); adapter = new ArrayAdapter<String> (this,R.layout.historylistlayout,HistoryList); setListAdapter(adapter); } } 

Вот пример истории:

 <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="history"> <item><b>1883</b><br/>Some stuff happened</item> <item><b>1884</b><br/>Some more stuff happened <i>before</i> the other stuff </item> <resources> 

Вот мой historylistlayout.xml:

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_vertical" android:textColor="#ffffff" android:background="#000050" android:layout_marginTop="5px" android:minHeight="?android:attr/listPreferredItemHeight" android:padding="3px" android:textSize="8pt" android:layout_gravity="top|left"/> 

И вот мой main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:textColor="#ffffff" android:background="#000080" android:isScrollContainer="true" android:layout_height="fill_parent" android:layout_width="fill_parent" android:scrollbarStyle="insideOverlay"> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:clickable="true" android:dividerHeight="1px"/> </LinearLayout> 

Solutions Collecting From Web of "Отображение форматированной строки в формате HTML"

Я пытался сделать что-то подобное, и выяснил, что мой html вместе с CSS не форматируется правильно, поэтому я взял строку и загрузил ее в веб-представление следующим образом:

  WebView webview = (WebView) findViewById(R.id.MyWebview); String summary = "<html><body>You scored <b>192</b> points.</body></html>"; webview.loadData(summary, "text/html", "utf-8"); 

И он распознал все стили и правильно форматировал html. Больше от справки android ЗДЕСЬ

Используйте функцию, которую вы упомянули, чтобы вернуть натянутую строку, а затем установите текст вашего текстового вида, используя toString из возвращаемого объекта Spanned, чтобы сделать форматированный текст:

 Spanned marked_up = Html.fromHtml(yourTextWithHTML); ((TextView) findViewById(R.id.text1)).setText(marked_up.toString()); 

Это будет работать, когда yourTextWithHTML – это любая из строк в тегах элементов, которые вы разместили. Например "<b>1883</b><br/>Some stuff happened"

  Spanned spannedContent = Html.fromHtml(htmlString); textView.setText(spannedContent, BufferType.SPANNABLE); 

Это кажется самым простым на самом деле (из HTML в строчном ресурсе? ):

 mTextView.setText(getText(R.string.my_styled_text)); 

Это работает для строк, содержащих HTML внутри.

Я столкнулся с той же проблемой и решил ее, используя

  CharSequence[] HistoryList = getResources().getTextArray(R.array.history); 

Вышеприведенный код возвращает стилизованный текстовый массив, связанный с ресурсом. Он вернет CharSequence []

Затем просто используйте элементы в

  setText(HistoryList[index]);