Frage

Auf meinem Präferenz Bildschirm habe ich eine Präferenz, dass beim Anklicken eines Dialog Farbauswahl wird geöffnet. Was ich möchte, ist tun, wenn der Benutzer wählt eine Farbe, dass der Text Zusammenfassung der Präferenz ist in dieser Farbe angezeigt.

ich weiß, ich die Zusammenfassung wie diese aufgebaut haben kann, Currently <font color="#ff0000">this color</font> und haben es in dieser Farbe angezeigt werden soll. Das Problem ist die Farbe, die ich bin immer wieder wird die android int Farbe.

Ich konnte die roten () verwenden, Grün (), blau () -Methoden und dann diejenigen zu Hex umwandeln und sie dann in einen String kombinieren, damit ich die Zusammenfassung Text mit dem neuen Wert einstellen könnte und das funktioniert: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor )); Ich war nur neugierig, ob es ein einfacherer Weg, dies zu tun.

Vielen Dank im Voraus.

Sean

War es hilfreich?

Lösung

OK, was ich tun endete wurde mit einem Spannable. Dies nimmt die Farbe als Integer.

Spannable summary = new SpannableString("Currently This Color");
summary.setSpan(new ForegroundColorSpan(color), 0, summary.length(), 0);
preference.setSummary(summary);

Andere Tipps

Verwenden Html.fromHtml um Stil Ihren Text.

mPodFolderPref.setTitle(Html.fromHtml("<font color='red'>" +  mPodFolderPref.getTitle() + "</font>"));
mPodFolderPref.setSummary(Html.fromHtml("<font color='red'>" +  mPodFolderPref.getSummary() + "</font>"));

Html.fromHtml können viel für Sie tun.

Ein bisschen spät, aber ich fand nützlich, diese in sich geschlossene Methoden zu schreiben:

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);
}

Alle oben genannten Möglichkeiten hat mir nicht geholfen. Ich landete durch die prefernces Klasse erweitert:

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));
    }

}

Hallo können Sie die Farbe der Präferenz ändern mit Html.fromHtml ().

ex: private String title = "" + "Legen Sie die SMS Send Limit" + "";

und fügen Sie setzen diese Zeichenfolge aus Ihrem Android-Anwendung wie diese.

CheckBoxPreference _test = (CheckBoxPreference) findPreference ( "text"); _test .setTitle (Html.fromHtml (Titel));

folgen Sie diesem Link für die HTML-Ansicht von Android: http://www.androidpeople.com/tag/html-tags/

Danke

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top