Come posso impostare il colore del testo di sintesi preferenza Android?
-
25-09-2019 - |
Domanda
Sul mio schermo preferenza ho una preferenza che se cliccato apre una finestra di dialogo selettore colore. Quello che vorrei fare è quando l'utente seleziona un colore, che la sintesi del testo della preferenza viene visualizzato in quel colore.
So che posso avere il riepilogo impostato in questo modo, Currently <font color="#ff0000">this color</font>
e mostrare in quel colore. Il problema è il colore che sto ottenendo indietro è il colore int Android.
ho potuto usare il rosso (), verde (), blu () metodi e poi convertire quelli per Hex e poi combinarle in una stringa in modo da poter impostare il testo di sintesi con il nuovo valore e che le opere: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor ));
ero solo curioso di sapere se c'è un modo più semplice per fare questo.
Grazie prima del tempo.
Sean
Soluzione
OK quello che ho finito per fare stava usando uno Spannable. Questo prende il colore come un intero.
Spannable summary = new SpannableString("Currently This Color");
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0);
preference.setSummary(summary);
Altri suggerimenti
Usa Html.fromHtml allo stile il testo.
mPodFolderPref.setTitle(Html.fromHtml("<font color='red'>" + mPodFolderPref.getTitle() + "</font>"));
mPodFolderPref.setSummary(Html.fromHtml("<font color='red'>" + mPodFolderPref.getSummary() + "</font>"));
Html.fromHtml può fare molto per voi.
Un po 'in ritardo, ma ho trovato utile scrivere questi metodi indipendenti:
private void setColorPreferencesTitle(EditTextPreference textPref, int color) {
CharSequence cs = (CharSequence) textPref.getTitle();
String plainTitle = cs.subSequence(0, cs.length()).toString();
Spannable coloredTitle = new SpannableString (plainTitle);
coloredTitle.setSpan( new ForegroundColorSpan(color), 0, coloredTitle.length(), 0 );
textPref.setTitle(coloredTitle);
}
private void resetColorPreferencesTitle(EditTextPreference textPref) {
CharSequence cs = (CharSequence) textPref.getTitle();
String plainTitle = cs.subSequence(0, cs.length()).toString();
textPref.setTitle(plainTitle);
}
Tutte le vie di cui sopra non mi ha aiutato. Ho finito per estende la classe prefernces:
public class CustomListPreferences extends Preference {
public CustomListPreferences(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomListPreferences(Context context) {
super(context);
}
@Override
protected void onBindView(View view) {
super.onBindView(view);
((TextView)view.findViewById(android.R.id.summary)).setTextColor(getContext().get Resources().getColor(R.color.green));
}
}
Ciao è possibile modificare il colore di preferenza utilizzando Html.fromHtml ().
es.:titolo private String = "" + "Impostare la SMS Send Limit" + "";
e aggiungere impostare questa stringa dall'applicazione Android come questo.
CheckBoxPreference _test = (CheckBoxPreference) findPreference ( "testo"); _test .setTitle (Html.fromHtml (titolo));
Segui questo link per la visualizzazione HTML di Android: http://www.androidpeople.com/tag/html-tags/
Grazie