No se puede obtener HREF para trabajar en Android strings.xml
Estoy intentando agregar un enlace a un perfil de Twitter en una caja de aproximadamente. Los enlaces "regulares", como la dirección de correo electrónico y la dirección web, son manejados por
android:autoLink="email|web"
En about.xml, pero para una página de perfil de Twitter necesito usar el código html en mi strings.xml. He intentado:
<string name="twitter">Follow us on <a href=\"http://www.twitter.com/mytwitterprofile">Twitter: @mytwitterprofile</a></string>
Que hace el marcado del html en la caja alrededor.
También he intentado:
<string name="twitter">Follow us on <a href="http://www.twitter.com/mytwitterprofile">Twitter: @mytwitterprofile</a></string>
Que muestran el texto "Síguenos en Twitter: @mytwitterprofile", pero no es un hyper-link.
¿Cómo hago esta tarea aparentemente simple?
Saludos, Barry
La respuesta simple es que TextView
no soporta las etiquetas <a>
. AFAIK, solo admite formateo básico como <b>
, <i>
y <u>
. Sin embargo, si usted proporciona android:autoLink="web"
, la siguiente cadena:
<string name="twitter">Follow us at twitter.com/mytwitterprofile</string>
twitter.com/mytwitterprofile
en un enlace adecuado (cuando se establezca a través de XML como android:text="@string/twitter"
, si desea configurarlo desde código, necesitará el método Html.fromHtml
que alguien más ha publicado en una respuesta).
El problema es que las etiquetas de enlace "a href" están dentro de strings.xml y se analizan como etiquetas cuando se analiza strings.xml, que no desea. Lo que significa que usted necesita tener que ignorar las etiquetas que utilizan XML CDATA:
<string name="sampleText">Sample text <![CDATA[<a href="www.google.com">link1</a>]]></string>
Y luego puedes continuar con Html.fromHtml()
y hacerla LinkMovementMethod
con LinkMovementMethod
:
TextView tv = (TextView) findViewById(R.id.textHolder); tv.setText(Html.fromHtml(getString(R.string.sampleText))); tv.setMovementMethod(LinkMovementMethod.getInstance());
No estoy muy seguro de cómo vincular usando 'cadenas', pero se puede establecer el texto de la EditText o TextView utilizando 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());