Wiem, że mogę umieścić znaczniki HTML ze ucieczką w zasobach ciągów. Jednak patrząc na kod źródłowy aplikacji Kontakty, widzę, że nie muszą one kodować kodu HTML. Cytat z aplikacji Kontakty strings.xml :
<string name="contactsSyncPlug"><font fgcolor="#ffffffff">Sync your Google contacts!</font>
\nAfter syncing to your phone, your contacts will be available to you wherever you go.</string>
Niestety, gdy próbuję czegoś podobnego (podobnego Hello, <b>World</b>!
), getString()
zwraca ciąg bez tagów (widzę to w logcat
). Dlaczego? Jak mogę uzyskać oryginalny ciąg z tagami i wszystkim? Jak działa aplikacja Kontakty?
\"
nastyle
własność. Przykład<a style=\"...\">link</a>
Wydaje się,
getString()
że właśnie to - dostaje ciąg . Aby z tego skorzystać, musisz użyćgetText()
(i nie więcejHtml.fromHtml()
), tj .:Jednak wydaje się, że
android:text
właściwość robi to samo, a następujące są równoważne:A w
strings.xml
:źródło
\n
?Najlepszym rozwiązaniem jest takie wykorzystanie zasobów:
a następnie wyświetlić go za pomocą:
Spróbuj użyć tego zasobu bez
<![CDATA[ ]]>
iz,tv.setText(getText(R.string.htmlsource));
a zobaczysz różnicę.źródło
Wiem, że to stare pytanie, ale wydaje się, że nie zaproponowano jeszcze najbardziej skutecznej odpowiedzi.
Po prostu użyj
HTML-escaped
znaków, aby nie został przetworzony przez,getString
ale zostanie przetworzony przezHtmlCompact.fromHtml
(lub starszegoHtml.fromHtml
).Obsługuje to również więcej tagów, takich jak linki HTML itp., Nie tylko formatowanie, jak
getString
metoda.Na przykład coś takiego powinno działać:
W twoim przypadku wymiany
<
z<
tak:źródło
działa u mnie bez bloku CDATA.
Używam go w układzie.
źródło
Pomysł: umieść HTML w plikach w formacie JSON i zapisz je w / res / raw. (JSON jest mniej wybredny)
Przechowuj rekordy danych w następujący sposób w obiekcie tablicy:
Aby odczytać dane w swojej aplikacji:
Wreszcie
Data
klasa jest po prostu kontenerem zmiennych publicznych dla łatwego dostępu ...źródło