2012-02-09 7 views
21

Di solito installo una specie di AlertDialog da attivare quando un utente utilizza prima una delle mie app e io spiego come usare l'app e dare un'introduzione generale a quello che hanno appena scaricato. Di solito carico anche le mie stringhe da un file strings.xml.Android-È possibile aggiungere un link cliccabile in una risorsa stringa

Quello che voglio fare è rendere cliccabile una delle parole nella mia risorsa stringa come un collegamento ipertestuale su una pagina web. Fondamentalmente avresti un AlertDialog e all'interno della risorsa stringa ci sarebbe una parola evidenziata o forse solo un indirizzo web che potrebbero premere. Suppongo che potrei semplicemente aggiungere un pulsante che li porterebbe sul sito ma volevo solo sapere se creare una parola nella risorsa stringa era possibile un collegamento ipertestuale cliccabile.

risposta

43

Basta utilizzare un collegamento formato HTML nella vostra risorsa:

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

È quindi possibile utilizzare setMovementMethod(LinkMovementMethod.getInstance()) sul TextView per rendere la cliccabile collegamento.

C'è anche l'attributo android:autoLinkandroid:autoLink che dovrebbe funzionare anche.

+1

Awesome :) Ill provare a impostare questo e postare quando ho farlo funzionare :) –

+4

android: autoLink = "web" funziona perfettamente per me. – Rajkiran

+1

Sto trovando che tutto nella stringa * dopo * il collegamento non viene visualizzato (quindi ' Questo mostra e so does this ma questo non è'). Come fai a fare questo? –

5

Android non crea stringhe che contengono link validi cliccabili automaticamente. Quello che puoi fare è aggiungere una visualizzazione personalizzata alla finestra di dialogo e utilizzare WebView per mostrare il messaggio di avviso. In tal caso, puoi memorizzare html nelle tue risorse e saranno cliccabili.

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 grazie per la info :) Non ho nemmeno pensato di usare una webview che è molto bella. –

+2

Utilizzare una WebView per una cosa così banale è davvero una cattiva idea. –

3

Ho trovato qualcosa di interessante. Fammi sapere se qualcuno di voi ha osservato questo.

Sotto collegamento ipertestuale non funziona se si utilizza

android:autoLink="web" 

ma funziona 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> 

ma se si utilizza il seguente link funziona con entrambe le

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> 
Problemi correlati