Esiste comunque un modo per impostare il colore di una risorsa stringa in Android? Voglio dire, so che posso usare alcuni tag html per cambiare lo stile delle stringhe (o sottostringhe) ma non ne ho trovato nessuno per cambiare colore. Ho visto altre soluzioni qui a StackOverflow come passare la stringa a Html.fromHtml (stringa) prima di impostare il testo, ma voglio farlo nell'editor delle risorse stringa. Qualche possibilità?Cambia colore parola nella stringa di risorse
risposta
Per quanto ne so non è possibile. Vorrei usare una SpannableString per cambiare il colore.
int colorBlue = getResources().getColor(R.color.blue);
String text = getString(R.string.text);
SpannableString spannable = new SpannableString(text);
// here we set the color
spannable.setSpan(new ForegroundColorSpan(colorBlue), 0, text.length(), 0);
Spannabile è davvero bello. È possibile impostare pensieri come fontseize e cose lì e basta allegarlo a una visualizzazione di testo. Il vantaggio è che puoi avere colori diversi in un'unica vista.
Modifica: Ok, se si desidera impostare solo il colore, la soluzione sopra menzionata è la strada da percorrere.
Le stringhe stesse non hanno colori, ma è possibile modificare il colore del testo nel testo Visualizza in cui appaiono. Vedere lo textview documentation, ma ci sono 2 modi per farlo.
XML
android:textColor
Codice
setTextColor(int)
Grazie per la risposta. Penso che non sia stato ben formulato. Mi sono riferito a cambiare il colore di una sottostringa nella stringa di risorse. Perdonami per quello. – Notbad
Sembra this metodo funziona:
<string name="some_text">this is <font fgcolor="#ffff0000">red</font></string>
Sembra che abbia smesso di funzionare in 4.3 (forse prima) - qualcuno sa cosa succede? –
[Perché ha smesso di funzionare] (https://code.google.com/p/android/issues/detail?id=58192), [come ha smesso di funzionare] (https://github.com/android/platform_frameworks_base/commit/a8f6d5f0720f400b6f59b0809aaefea83c5f51d4), [un bel workaround/coinvolge il codice: (] (http://stackoverflow.com/a/18839246/253468) e una brutta soluzione: per qualsiasi il colore sopra '7fffffff' applica quanto segue:' 'metti' ff6890a5' in una calcolatrice (opti convertire prima in decimale prima) e capovolgere il segno, quindi (facoltativamente riconvertire in hexa) prendere le ultime 8 cifre esadecimali e usare ''. – TWiStErRob
OK, ora ** QUELLO ** era dannatamente brillante. Ha funzionato perfettamente. Grazie mille e vorrei aver saputo di questo tanto tempo fa. –
Recentemente ho fatto una soluzione flessibile per questo problema. Mi consente di aggiungere facilmente più stili alle sottostringhe usando il concatenamento del metodo. Fa uso di SpannableString. Quando si desidera assegnare un colore a una determinata sottostringa, è possibile utilizzare ForegroundColorSpan.
public StyledString putColor(String subString, @ColorRes int colorRes){
if(getStartEnd(subString)){
int color = ColorUtil.getColor(context, colorRes);
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(color);
fullStringBuilder.setSpan(foregroundColorSpan, startingIndex, endingIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
return this;
}
Per il codice completo vedere gist.
Mentre un link è grande, si prega di [fornire contesto al tuo link (s)] (http://meta.stackoverflow.com/a/8259/169503), come * risposta * dovrebbe contenere una domanda. Tieni presente che essere * poco più di un link a un sito esterno * è una possibile ragione per [Perché e come vengono eliminate alcune risposte?] (Http://stackoverflow.com/help/deleted-answers). – Jan
- 1. Cambia colore stringa
- 2. cambia colore nella barra di navigazione
- 3. Cambia colore e carattere di una stringa usando NSAttributo String
- 4. cambia colore di sfondo
- 5. Emacs: Inserisci parola al punto nella stringa di sostituzione stringa
- 6. evidenzia la parola nella stringa, se contiene la parola chiave
- 7. Estrai l'ultima parola nella stringa in R
- 8. Regex trova la parola nella stringa
- 9. Cambia colore del pulsante di chiusura nella finestra modale bootstrap
- 10. Cambia colore di sfondo e colore carattere
- 11. Cambia parola di inoltro/parola indietro/parola di uccisione per parole CamelCase in Emacs
- 12. pulsante Cambia colore onclick
- 13. Gnuplot - cambia colore di sfondo
- 14. select2 cambia colore di sfondo
- 15. UIRefreshControl cambia colore di UIActivityIndicatorView
- 16. Cambia colore di Android: attivatoBackgroundIndicator
- 17. Cambia colore modulo costantemente
- 18. Lollipop - ProgressDialog cambia colore
- 19. Cambia colore polilinea dinamicamente
- 20. cambia sfondo UIAlertcontroller Colore
- 21. Cambia colore UIPicker
- 22. Cambia Colore EditText bordo
- 23. Cambia colore ProgressIndicator
- 24. Cambia UIBarbuttonItems Colore
- 25. Python | cambia il colore del testo nella shell
- 26. Android: cambia dinamicamente TextView Colore di sfondo
- 27. Cambia il colore del testo di una parola in un TextView
- 28. Android cambia colore di ImageView/Bitmap
- 29. Cambia il colore di sfondo di NSButton
- 30. Cambia colore del testo in base al colore di sfondo
Vedo, se questa è la strada da percorrere, potrei creare le mie risorse di stringa con qualche "codice" al suo interno per sapere dove inizia e dove finisce la sottostringa che voglio cambiare il colore ed elaborarlo come esposto. Grazie. – Notbad
'int colorBlue = getResources(). GetColor (R.color.blue); .... spannable.setSpan (nuovo ForegroundColorSpan (colorBlue), 0, text.length(), 0); 'può essere sostituito da una singola riga come questa' spannable.setSpan (new ForegroundColorSpan (R.color.blue). .' –
Inoltre, utilizzerei personalmente le costanti di flag dichiarate nella classe "spannable" invece di hard-coding 0 durante la chiamata.Rende un codice più leggibile e mantenibile.Ma qualcosa che vorrei fare .. –