2012-02-09 17 views
21

Normalmente configuré algún tipo de AlertDialog para disparar cuando un usuario usa por primera vez una de mis aplicaciones y explico cómo usar la aplicación y dar una introducción general a lo que acaban de descargar. También suelo cargar mis cadenas desde un archivo strings.xml.Android: ¿es posible agregar un enlace cliqueable en un recurso de cadena

Lo que quiero hacer es hacer que una de las palabras en mi recurso de cadena se pueda hacer clic como un hipervínculo en una página web. Básicamente, tendrías un AlertDialog y dentro del recurso de cadena habría una palabra resaltada o posiblemente solo una dirección web que podrían presionar. Supongo que podría simplemente agregar un botón que los llevaría al sitio, pero solo quería saber si al hacer una palabra en su recurso de cadena de caracteres era posible hacer clic en un hipervínculo.

Respuesta

43

sólo tiene que utilizar un enlace de formato HTML en su recurso:

<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>

entonces usted puede utilizar en su setMovementMethod(LinkMovementMethod.getInstance())TextView pueda hacer clic en enlace.

También hay TextView's android:autoLink atributo que también debería funcionar.

+1

Impresionante :) Trataré de configurar esto y volver a publicarlo cuando lo haga funcionar :) –

+4

android: autoLink = "web" funciona perfectamente para mí. – Rajkiran

+1

Estoy encontrando que todo en la cadena * después de * el enlace no se muestra (entonces ' Esto muestra y so does this pero esto doesn \ 't'). ¿Cómo haces esto? –

5

Android no hace cadenas que contengan un enlace válido que se pueda hacer clic automáticamente. Lo que puede hacer es agregar vista personalizada a su diálogo y usar WebView para mostrar el mensaje de alerta. En ese caso, puede almacenar html en sus recursos y se podrá hacer clic en ellos.

View alertDialogView = LayoutInflater.inflate(R.layout.alert_dialog_layout, null); 

WebView myWebView = (WebView) alertDialogView.findViewById(R.id.dialogWebView); 
myWebView.loadData("<a href=\"http://google.com\">Google!</a>", "text/html", "utf-8"); 
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this); 
builder.setView(alertDialogView); 

alert_dialog_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:orientation="vertical"> 
<WebView android:id="@+id/dialogWebView" android:layout_height="wrap_content" 
    android:layout_width="wrap_content" /> 
+0

Hey gracias por la info :) Ni siquiera pensé en usar una vista web eso es genial. –

+2

Usar WebView para algo tan trivial es realmente una mala idea. –

3

Encontré algo interesante. Avísame si alguno de ustedes observó esto.

A continuación hipervínculo no funciona si se utiliza

android:autoLink="web" 

sino que trabaja con

TextView link = (TextView) findViewById(R.id.link); 
link.setMovementMethod(LinkMovementMethod.getInstance()); 

<string name="my_link"> 
    <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
     Click me! 
    </a> 
</string> 

pero si se utiliza el siguiente enlace que funciona tanto con

android:autoLink="web" (or) 
TextView link = (TextView) findViewById(R.id.link); 
link.setMovementMethod(LinkMovementMethod.getInstance()); 

<string name="my_link"> 
    <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
     http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource 
</string> 
    </a> 
Cuestiones relacionadas