У меня есть строковый ресурс, называемый "foo". Это может быть простая строка... или она может содержать HTML. Это может измениться с течением времени: я должен иметь возможность поместить его как по крайней мере SpannableString сразу после чтения, будь то HTML или нет (, но как)
Я хочу получить этот необработанный CharSequence и сначала иметь возможность отображать его как есть (точные символы, а не "интерпретация" этого Android). Прямо сейчас я не могу этого сделать... toString() решает вырвать части, которые, как я думаю, не хочет видеть.
Мне бы хотелось создать SpannableString из этой и других строк или SpannableStrings через конкатенацию с помощью какого-либо метода (ни одна из нормальных не работает). Я хотел бы использовать этот SpannableString для отображения текста в формате HTML в TextView.
Это не должно быть сложно, но ясно, что я не делаю этого правильно (там очень мало информации об этом, что я нашел до сих пор). Несомненно, есть способ точно перевести между строк, SpannedStrings и даже Spannablestrings, не теряя разметки на этом пути?
Заметьте, что я уже играл с несколько сломанным Linkify, но мне нужен лучший контроль над процессом (без зависания неформатированных "/" s, правильных hrefs и т.д.). Я могу заставить все это работать, если я останусь HTML на всех шагах, хотя я не могу ничего конкатенировать.
Изменить 1: я узнал, что могу использовать следующее, чтобы всегда гарантировать, что я получаю свою необработанную строку (вместо того, чтобы Android решил, что это действительно CharSequence). Nice... теперь, как уговорить это в SpannableString?
<string name="foo"><![CDATA[
<b>Some bold</b>
]]>
</string>
Изменить 2: Не знаю, почему это не срабатывало раньше, но... если foo1 и foo2 являются строками, отмеченными как указано выше (как CDATA), то, по-видимому, можно сделать это:
String foo1 = (String)getResources().getText(R.string.foo1);
String foo2 = (String)getResources().getText(R.string.foo2);
SpannedString bar = new SpannedString(Html.fromHtml(foo1+foo2));
Любопытно: есть ли более простое решение, чем это? Действительно ли это дело CDATA? Это кажется запутанным (но не таким запутанным, как никогда не зная, какой тип ресурса будет... String, Spannable и т.д.)