Question

Sur mon écran de préférence j'ai une préférence que lorsque vous cliquez dessus ouvre une boîte de dialogue de sélecteur de couleur. Ce que je voudrais faire est lorsque l'utilisateur sélectionne une couleur, que le résumé du texte de la préférence est affiché dans cette couleur.

Je sais que je peux avoir le résumé établi comme celui-ci, Currently <font color="#ff0000">this color</font> et avoir afficher dans cette couleur. Le problème est la couleur que je suis en train de revenir est la couleur int Android.

Je pourrais utiliser le rouge (), vert (), bleu () méthodes et convertir ceux Hex, puis les combiner en une chaîne pour que je puisse mettre le texte de synthèse avec la nouvelle valeur et qui fonctionne: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor )); J'étais juste curieux de savoir s'il y a un moyen plus facile de le faire.

Merci à l'avance.

Sean

Était-ce utile?

La solution

OK ce que je fini par faire utilisait un Spannable. Cela prend la couleur comme un nombre entier.

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

Autres conseils

Utilisez Html.fromHtml pour styler votre texte.

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

Html.fromHtml peut faire beaucoup pour vous.

Un peu en retard, mais je l'ai trouvé utile d'écrire ces méthodes autonomes:

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

Tous les moyens ci-dessus ne m'a pas aidé. J'ai fini par étend 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));
    }

}

Salut, vous pouvez changer la couleur de préférence en utilisant Html.fromHtml ().

ex: titre de private String = "" + "Régler le SMS limite d'envoi" + "";

et définir cette chaîne ajouter à partir de votre application android comme celui-ci.

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

cliquez sur ce lien pour une vue HTML d'Android: http://www.androidpeople.com/tag/html-tags/

Merci

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top