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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top