Я пытаюсь сделать приложение с локализацией встроенным, но я хочу способ, которым я могу создать ссылку на сайт в рамках текста, URL, определяемый в другом месте (для простоты обслуживания).
Так, у меня есть свои ссылки в res/values/strings.xml:
...
http://some.link.com
http://some.link2.com
и мой локализованный текст в res/values-en-rGB/strings.xml
...
Sample text\nMore text and link1\nMore text and link2.
Я не протестировал этот бит, но от раздела локализации developer.android.com он говорит, что этот подход к сокращению дублирования содержания должен работать, хотя я не уверен, какая папка я должен поместить итальянский язык, например. Это было бы в 'res/values-it-rIT/strings.xml'? Позволяет предполагают, что у меня есть различные другие языки также.
Я ищу способ взять локализованный 'sampleText' основы и вставить мои ссылки HTML в и заставить их работать при нажатии. Я попробовал два подхода до сих пор:
1,
Помещение некоторого форматирования в 'sampleText' (%s):
Sample text\nMore text and link1\nMore text and link2.
и затем обрабатывая текст как это:
TextView tv = (TextView) findViewById(R.id.textHolder);
tv.setText(getResources().getString(R.string.sampleText, getResources().getString(R.string.link1), getResources().getString(R.string.link2)));
Но это не работало, когда я нажимаю на ссылку, даже при том, что текст ссылки вставляется к корректным местам.
2, я пытался использовать Linkify, но маршрут регулярного выражения может быть трудным, поскольку я смотрю на поддержку находящихся в нелатыни языков. Я пытался поместить пользовательский тег XML вокруг текста ссылки и затем сделать что-то вроде этого:
Pattern wordMatcher = Pattern.compile(".* ");
String viewURL = "content://" + getResources().getString(R.string.someLink);
Linkify.addLinks(tv, wordMatcher , viewURL );
Но это не работало также.
Так, я хотел бы знать, существует ли способ динамичного добавления нескольких URL к различным разделам того же текста, который свяжется с веб-контентом?
Попробуйте использовать Html.fromHtml ()
, чтобы преобразовать HTML в Spannable
, который вы поместите в TextView
. С тем, что у вас есть в №1, я ожидал бы, что TextView
покажет исходный HTML-код, а не визуализированный HTML.
Вы должны реализовать
setMovementMethod(LinkMovementMethod.getInstance());
в текстовом представлении
Вот лучший пример: