Pregunta

En la pantalla de mi preferencia que tienen una preferencia que al hacer clic se abre un cuadro de diálogo de selección de color. Lo que me gustaría hacer es cuando el usuario selecciona un color, que el resumen de texto de la preferencia se visualiza en ese color.

Yo sé que puedo tener el resumen establecido como este, Currently <font color="#ff0000">this color</font> y tienen que mostrar en ese color. El problema es el color que estoy recibiendo de vuelta es el color int androide.

Me podía usar el color rojo (), verde (), azul () métodos y luego convertirlas a Hex y luego combinarlas en una cadena para que pudiera establecer el texto resumen con el nuevo valor y que las obras: String colorString = String.format("#%02x%02x%02x",Color.red( defaultColor ), Color.green( defaultColor ), Color.blue( defaultColor )); estaba curiosidad si hay una manera más fácil de hacer esto.

Gracias de antemano.

Sean

¿Fue útil?

Solución

Aceptar lo que terminé haciendo estaba usando un Spannable. Esta toma el color como un entero.

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

Otros consejos

Uso Html.fromHtml al estilo de su texto.

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

Html.fromHtml puede hacer mucho por ti.

Un poco tarde, pero he encontrado útil escribir estos métodos independientes:

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 las formas anteriores no me ayudaron. Terminé por amplía la clase 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));
    }

}

Hola se puede cambiar el color de preferencia usando Html.fromHtml ().

ej: título private String = "" + "Establecer el límite SMS Enviar" + "";

y añadir establecer esta cadena desde la aplicación Android como este.

CheckBoxPreference _test = (CheckBoxPreference) findPreference ( "texto"); _test .setTitle (Html.fromHtml (título));

Sigue el enlace para la vista HTML de Android: http://www.androidpeople.com/tag/html-tags/

Gracias

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top