HTML dans la ressource de chaîne?

Je sais que je peux mettre des balises HTML échappées dans des ressources de chaîne. Cependant, en regardant le code source de l’application Contacts, je peux voir qu’ils ont un moyen de ne pas avoir à encoder le code HTML. Citation de l’application Contacts ssortingngs.xml :

Sync your Google contacts! \nAfter syncing to your phone, your contacts will be available to you wherever you go. 

Malheureusement, lorsque j’essaie quelque chose de similaire (comme Hello, World! ), getSsortingng() renvoie la chaîne sans les balises (je peux le voir dans logcat ). Pourquoi donc? Comment puis-je obtenir la chaîne d’origine, avec des balises et tout? Comment se passe l’application Contacts?

Vous pouvez également entourer votre code HTML dans un bloc CDATA et getSsortingng renverra votre code HTML réel. Comme tel:

 baz is cool]]> 

Maintenant, lorsque vous effectuez un getSsortingng (R.ssortingng.foo), la chaîne sera HTML. Si vous avez besoin de rendre le HTML (avec le lien comme indiqué) via un TextView cliquable, vous devrez effectuer un appel Html.fromHtml (…) pour obtenir le texte spannable.

Il semble que getSsortingng() ne fait que cela – obtient une chaîne . Pour l’utiliser, vous devez utiliser getText() (et pas plus de Html.fromHtml() ), à savoir:

 mTextView.setText(getText(R.ssortingng.my_styled_text)); 

Cependant, il semble que l’ android:text propriété android:text fasse exactement la même chose, et ce qui suit est équivalent:

  

Et dans ssortingngs.xml :

 Hello, World! 

La meilleure solution consiste à utiliser les ressources d’une manière:

 Adults are spotted gold and black on the crown, back and wings. Their face and neck are black with a white border; they have a black breast and a dark rump. The legs are black.

It is similar to two other golden plovers, Eurasian and Pacific.

The American Golden Plover

is smaller, slimmer and relatively longer-legged than Eurasian Golden Plover (Pluvialis apricaria) which also has white axillary (armpit) feathers. It is more similar to Pacific Golden Plover (Pluvialis fulva) with which it was once considered conspecific under the name \"Lesser Golden Plover\". The Pacific Golden Plover is slimmer than the American species, has a shorter primary projection, and longer legs, and is usually yellower on the back.

These birds forage for food on tundra, fields, beaches and tidal flats, usually by sight. They eat insects and crustaceans, also berries.

]]>

et que l’afficher avec:

 Spanned sp = Html.fromHtml( getSsortingng(R.ssortingng.htmlsource)); tv.setText(sp); 

Essayez d’utiliser cette ressource sans et avec tv.setText (getText (R.ssortingng.htmlsource)); et vous verrez la différence.

Idée: placez le HTML dans des fichiers au format JSON et stockez-les dans / res / raw. (JSON est moins difficile)

Stockez les enregistrements de données comme ceci dans un object tableau:

 [ { "Field1": "Ssortingng data", "Field2": 12345, "Field3": "more Ssortingngs", "Field4": true }, { "Field1": "Ssortingng data", "Field2": 12345, "Field3": "more Ssortingngs", "Field4": true }, { "Field1": "Ssortingng data", "Field2": 12345, "Field3": "more Ssortingngs", "Field4": true } ] 

Pour lire les données dans votre application:

 private ArrayList getData(Ssortingng filename) { ArrayList dataArray = new ArrayList(); try { int id = getResources().getIdentifier(filename, "raw", getPackageName()); InputStream input = getResources().openRawResource(id); int size = input.available(); byte[] buffer = new byte[size]; input.read(buffer); Ssortingng text = new Ssortingng(buffer); Gson gson = new Gson(); Type dataType = new TypeToken>>() {}.getType(); List> natural = gson.fromJson(text, dataType); // now cycle through each object and gather the data from each field for(Map json : natural) { final Data ad = new Data(json.get("Field1"), json.get("Field2"), json.get("Field3"), json.get("Field4")); dataArray.add(ad); } } catch (Exception e) { e.printStackTrace(); } return dataArray; } 

Enfin, la classe Data est juste un conteneur de variables publiques pour un access facile …

 public class Data { public Ssortingng ssortingng; public Integer number; public Ssortingng somessortingng; public Integer site; public boolean logical; public Data(Ssortingng ssortingng, Integer number, Ssortingng somessortingng, boolean logical) { this.ssortingng = ssortingng; this.number = number; this.somessortingng = somessortingng; this.logical = logical; } } 

ça marche pour moi sans bloc CDATA.

 Premium`enter code here` 

Je l’utilise dans la mise en page.