Pergunta

Na minha tela de preferência, tenho uma preferência de que, quando clicado, abre uma caixa de diálogo de colorido. O que eu gostaria de fazer é quando o usuário selecionar uma cor, que o resumo do texto da preferência é exibido nessa cor.

Eu sei que posso ter o resumo configurado assim, Currently <font color="#ff0000">this color</font> e faça com que seja exibido nessa cor. O problema é que a cor que estou voltando é a cor Android int.

Eu poderia usar os métodos Red (), Green (), Blue () e convertê -los em Hex e depois combiná -los em uma corda para que eu pudesse definir o texto resumido com o novo valor e que funciona: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor )); Eu estava curioso se houver uma maneira mais fácil de fazer isso.

Obrigado com antecedência.

Sean

Foi útil?

Solução

Ok, o que acabei fazendo foi usar um espanhável. Isso leva a cor como um número inteiro.

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

Outras dicas

Use html.fromhtml para estilizar seu texto.

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

Html.fromhtml pode fazer muito por você.

Um pouco tarde, mas achei útil escrever estes métodos independentes:

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

Todas as maneiras acima não me ajudaram. Acabei por estender a aula de preferências:

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

}

Olá, você pode alterar a cor da preferência usando html.fromhtml ().

Ex: Private String title = "" + "Defina o limite de envio do SMS" + "";

e adicione definir esta string do seu aplicativo Android como este.

CheckboxPreference _Test = (CheckBoxPreference) findPreference ("Text"); _test .Settitle (html.fromhtml (title));

Siga este link para a visão HTML do Android:http://www.androidpeople.com/tag/html-tags/

Obrigado

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top