Como posso definir a cor do texto do resumo da preferência do Android?
-
25-09-2019 - |
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
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