Impostare dynamicmente i collegamenti al text in strings.xml

Sto cercando di creare un'applicazione con la localizzazione incorporata, ma voglio un modo per creare un link web all'interno del text, l'URL definito altrove (per facilitare la manutenzione).

Quindi, ho i miei collegamenti in res / values ​​/ strings.xml:

  • Come inserire i dati nel file di database nella cartella degli asset
  • Come eseguire il debug in modalità remota Crosswalk webview?
  • Perché utilizzare SP per le size dei caratteri in Android?
  • Le size / risoluzioni più diffuse sui telefoni Android
  • Android: Rileva quando ScrollView colpisce in fondo
  • android aprire la presa e submit comandi
  • <?xml version="1.0" encoding="utf-8"?> <resources> ... <string name="link1">http://some.link.com</string> <string name="link2">http://some.link2.com</string> </resources> 

    e il mio text localizzato in res / values-it-rGB / strings.xml

     <?xml version="1.0" encoding="utf-8"?> <resources> ... <string name="sampleText">Sample text\nMore text and link1\nMore text and link2.</string> </resources> 

    Non ho provato questo bit, ma dalla sezione di localizzazione di developer.android.com afferma che questo approccio per ridurre la duplicazione dei contenuti dovrebbe funzionare, anche se non sono sicuro di quale cartella potrei mettere in italiano, ad esempio. Sarebbe in 'res / values-it-rIT / strings.xml'? Supponiamo di avere anche diverse altre lingue.

    Sto cercando un modo per prendere la base localizzata 'sampleText' e inserire i miei link html e farli funzionare quando cliccati. Ho provato finora due approcci:

    1,

    Mettere alcune formattazioni nel 'sampleText' (% s):

     <string name="sampleText">Sample text\nMore text and <a href="%s">link1</a>\nMore text and <a href="%s">link2</a>.</string> 

    e quindi elaborare il text come questo:

     TextView tv = (TextView) findViewById(R.id.textHolder); tv.setText(getResources().getString(R.string.sampleText, getResources().getString(R.string.link1), getResources().getString(R.string.link2))); 

    Ma questo non funzionava quando faccio clic sul collegamento, anche se il text del collegamento viene inserito nei luoghi corretti.

    2, ho cercato di utilizzare Linkify, ma il path di espressione regolare può essere difficile, mentre sto cercando di sostenere lingue non latine basate. Ho cercato di mettere un tag xml personalizzato attorno al text del link e quindi fare qualcosa di simile:

     Pattern wordMatcher = Pattern.compile("<span1>.*</span1>"); String viewURL = "content://" + getResources().getString(R.string.someLink); Linkify.addLinks(tv, wordMatcher , viewURL ); 

    Ma anche questo non funzionava.

    Quindi, vorrei sapere se c'è un modo per aggiungere dynamicmente più URL a diverse sezioni dello stesso text che si collegheranno al contenuto web?

  • Pulsante dello spazio di filter dell'elenco di filter di Android?
  • Come mettere un elenco nell'intento
  • onActivityResult () viene chiamato in un momento inaspettato
  • Posizione di servizio GPS Force chiusa
  • Convertire UTC in ora locale corrente
  • Invio di sms a più persone in android
  • 4 Solutions collect form web for “Impostare dynamicmente i collegamenti al text in strings.xml”

    Il problema è che i tag di collegamento "a href" sono all'interno di strings.xml e vengono analizzati come tag quando strings.xml viene analizzato, che non si desidera. Significa che devi ignorare i tag utilizzando il CDATA di XML:

    <string name="sampleText">Sample text <![CDATA[<a href="http://www.google.com">link1</a>]]></string>

    E poi puoi continuare con Html.fromHtml() e renderlo cliccabile con LinkMovementMethod :

     TextView tv = (TextView) findViewById(R.id.textHolder); tv.setText(Html.fromHtml(getString(R.string.sampleText))); tv.setMovementMethod(LinkMovementMethod.getInstance()); 

    Nel tuo set di layout android:autoLink per il web

     <TextView android:text="@string/text_with_url" android:layout_width="match_parent" android:layout_height="wrap_content" android:autoLink="web" /> 

    E in strings.xml basta aggiungere l'URL (s).

     <string name="text_with_url">http://stackoverflow.com/ FTW!</string> 

    Provate a utilizzare Html.fromHtml() per convertire l'HTML in una Spannable che è inserita nel TextView . Con quello che hai in # 1, mi aspetto che TextView mostri l'origine HTML, non rendendo HTML.

    Devi implementare

     setMovementMethod(LinkMovementMethod.getInstance()); 

    sulla tua Textview

    Ecco un esempio migliore:

    cliccabili-urls-in-android-textviews

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.