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:

  • Controllare se il dispositivo dispone di una camera?
  • Aggiunta di animazioni a una vista di elenco in Android
  • Comportmento di browser per dispositivi mobili con sessioni di Google e Account Chooser
  • HoloEverywhere errore in esecuzione con ActionBarSherlock
  • Come tracciare una posizione GPS su un'image utilizzata come una mappa?
  • Android - SupportMapFragment con GoogleMaps API 2.0 che dà IllegalArgumentException
  • <?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?

  • Monitoraggio della vista aggiunta a WindowManager (nessuna function findViewById ())
  • Sto ottenendo un NullPointerException quando utilizzo ACTION_IMAGE_CAPTURE per scattare una foto
  • Come migrare API Twitter da v1 a v1.1?
  • android: Sostituisci il contenitore di frammenti all'interno di un CoordinatorLayout
  • Come mantenere il servizio in esecuzione dopo la forza-stop?
  • Come creare un utile tooltip 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.