Не удается заставить HREF работать в Android strings.xml - PullRequest
4 голосов
/ 22 апреля 2011

Я пытаюсь добавить ссылку на профиль Twitter в поле about.«Обычные» ссылки, такие как адрес электронной почты и веб-адрес, обрабатываются

android:autoLink="email|web"

в файле about.xml, но для страницы профиля в Твиттере мне нужно использовать HTML-код в моем strings.xml.Я пробовал:

<string name="twitter">Follow us on &lt;a href=\"http://www.twitter.com/mytwitterprofile"&gt;Twitter: @mytwitterprofile&lt;/a&gt;</string>

, который отображает HTML-разметку в поле about.

Я также пробовал:

<string name="twitter">Follow us on <a href="http://www.twitter.com/mytwitterprofile">Twitter: @mytwitterprofile</a></string>

, которые отображают текст "Followнас в Твиттере: @mytwitterprofile ", но это не гиперссылка.

Как мне выполнить эту, казалось бы, простую задачу!

Ответы [ 3 ]

10 голосов
/ 30 марта 2012

Проблема в том, что ваши теги ссылок "a href" находятся внутри strings.xml и анализируются как теги при анализе strings.xml, что вам не нужно.Это означает, что вам нужно, чтобы он игнорировал теги, используя CDATA XML:

<string name="sampleText">Sample text <![CDATA[<a href="www.google.com">link1</a>]]></string>

А затем вы можете продолжить с Html.fromHtml() и сделать его кликабельным с помощью LinkMovementMethod:

TextView tv = (TextView) findViewById(R.id.textHolder);
tv.setText(Html.fromHtml(getString(R.string.sampleText)));
tv.setMovementMethod(LinkMovementMethod.getInstance());
5 голосов
/ 22 апреля 2011

Ответ прост: TextView не поддерживает теги <a>. AFAIK, он поддерживает только базовое форматирование, такое как <b>, <i> и <u>. Однако, если вы введете android:autoLink="web", следующая строка:

<string name="twitter">Follow us at twitter.com/mytwitterprofile</string>

Превратит twitter.com/mytwitterprofile в правильную ссылку (при установке через XML, например, android:text="@string/twitter"; если вы хотите установить ее из кода, вам понадобится метод Html.fromHtml, который кто-то другой опубликовал в ответе).

2 голосов
/ 22 апреля 2011

Я не очень уверен, как связать, используя 'строки', но вы можете установить текст EditText или TextView, используя fromHtml ...

TextView text = (TextView) findViewById(R.id.text);
text.setText(Html.fromHtml("<a href=\"http://www.google.com\">Google Link!</a>"));
text.setMovementMethod(LinkMovementMethod.getInstance());
...