Не удается заставить HREF работать в Android strings.xml

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

android:autoLink="email|web"

в about.xml, но для страницы профиля Twitter мне нужно использовать 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>

которые отображают текст «Следуйте за нами в Twitter: @mytwitterprofile», но это не гиперссылка.

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

Ура, Барри


person barry    schedule 22.04.2011    source источник
comment
как добавить строку в коробку?   -  person rajath    schedule 22.04.2011
comment
Посмотрите, считаете ли вы этот пост полезным - stackoverflow.com/questions / 1997328 /   -  person rajath    schedule 22.04.2011
comment
TextView textView = (TextView) findViewById (R.id.about_content); textView.setTextColor (Цвет.БЕЛЫЙ); textView.setText (getString (R.string.about_text, getString (R.string.twitter), getString (R.string.email_address), getString (R.string.website)));   -  person barry    schedule 22.04.2011


Ответы (3)


Ответ прост: 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, опубликованный в ответе кем-то другим).

person Felix    schedule 22.04.2011
comment
Спасибо за это. Это не идеально, но подойдет. Кстати, Html.fromHtml мне тоже не понадобился (хотя в моем about.xml есть android: autoLink = email | web) - person barry; 22.04.2011

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

<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());
person dule    schedule 30.03.2012
comment
Думаю, чтобы закрыть раздел CDATA, нужно]] ›, а не просто]]. ‹String name = sampleText› Пример текста ‹! [CDATA [‹ a href = www.google.com ›link1 ‹/a›]]› ‹/string› - person Leo Landau; 16.01.2013

Я не слишком уверен, как связать с помощью «строк», но вы можете установить текст 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());
person Tom O    schedule 22.04.2011
comment
Спасибо за ответ, но это просто отображает ссылку Google !, а не гиперссылку. - person barry; 22.04.2011
comment
Текст.setMovementMethod (LinkMovementMethod.getInstance ()); превратить его в интерактивную ссылку ?! - person Tom O; 22.04.2011
comment
К сожалению, нет, просто обычный текст. - person barry; 22.04.2011