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 &lt;a href=\"http://www.twitter.com/mytwitterprofile"&gt;Twitter: @mytwitterprofile&lt;/a&gt;</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()); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.