2010-11-02 12 views
5

He instalado mi aplicación en un teléfono real, y aunque en el emulador todos los textos de los resúmenes de preferencias parecen ser del mismo color, en el teléfono real el color es diferente (algún tipo de azul ... pero supongo que depende del modelo del teléfono).¿Predeterminación de Android el color predeterminado de resumen?

¿Cómo puedo establecer este color en mi componente de preferencias personalizadas? (he implementado mi propia barra de búsqueda, y su color de texto de resumen es diferente de todos los demás componentes de color de texto ...).

Gracias!

+0

¿Los recursos de color están bien? : http://developer.android.com/guide/topics/resources/providing-resources.html – ykatchou

+0

Hemos intentado establecer el color del texto en android.R.color.white; por ejemplo, pero se pone negro. – Jason

+0

¿Has probado algo más aparte de un recurso android.R.color? Esto sería estúpido, pero los fabricantes pueden cambiar esos valores ... y afectaría a todas las aplicaciones instaladas en el dispositivo. Intente tal vez un valor personalizado como #fff. – grattemedi

Respuesta

2

He encontrado estos: android:textAppearance="?android:attr/textAppearanceLarge" y android:textAppearance="?android:attr/textAppearanceSmall" parecen hacer el truco .

1

No creo que esto sea posible. Puedo cambiar el color de fondo y el color del texto del título, pero no el color de resumen.

Antecedentes:

getListView().setBackgroundColor(Color.TRANSPARENT); 

Título del texto:

Preference yourpreference = findPreference("yourpreference"); 
TextView tv = (TextView)yourpreference.getView(null, getListView()); 
tv.setTextColor(...); 

Siento no haber podido ayudar a más ...

+1

Puedo cambiar el color del verano, sin embargo, no puedo encontrar la forma de unirlo al color del sistema, por ejemplo, el teléfono de mi galaxy tiene colores de sistema diferentes para las preferencias que otros teléfonos – Jason

+0

Jason; ¿Cómo cambias el color de las preferencias? – Emmanuel

2

Los teléfonos Samsung Galaxy S tienen su propio diseño Preferencia con el color de texto especificado para la línea Resumen. Aunque se especifica TextAppearance.Small, el atributo textColor del diseño está anulando la apariencia del texto.

4
Preference pUpdate = findPreference("sys_setting_update"); 
pUpdate.setSummary(Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>")); 

uso Html.fromHtml("<font color=\"#B0C4DE\">This is content</font>") a setSummary

3

he descubierto una manera de recuperar el color predeterminado utilizado por el dispositivo Android se ejecuta la aplicación. Es un poco complicado y requieres que recupera el ser de color se muestra desde otra vista de resumen de preferencias de su actividad y la almacena en tiempo de ejecución.

Luego puede usar el mismo código de color en otras Vistas de otras preferencias, asegurando que siempre obtendrá el mismo código de color Android asignado a las preferencias estándar. Así es como lo hice:

Mi actividad de preferencias tiene una CheckBoxPreference normal que utilizo para activar o desactivar un servicio. He ampliado CheckBoxPreference de la siguiente manera, por lo que mi extensión recupera en rutime el color por defecto de Android finalmente dio al resumen de ese CheckBoxPreference:

public class MyCheckBoxPreference extends android.preference.CheckBoxPreference { 

    private static int sSummaryColor = Color.WHITE; 
    private static boolean sInitialized = false; 

    public MyCheckBoxPreference(Context context) { 
     super(context); 
    } 

    public MyCheckBoxPreference(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public MyCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override  
    public void onBindView(View view) { 
     super.onBindView(view); 
     if (!sInitialized) { 
      sSummaryColor = getSummaryColor(view); 
      sInitialized = true; 
     } 
    } 

    private int getSummaryColor(View view) { 

     int color = Color.WHITE; 

     // Gets the color android gave to the summary by default 
     TextView summaryView = (TextView) view.findViewById(android.R.id.summary); 
     if (summaryView != null) { 
      ColorStateList list = summaryView.getTextColors(); 
      if (list != null) { 
       color = list.getDefaultColor(); 
      } 
     } 
     return color; 
    } 

    public static int getSummaryColor() { 
     return sSummaryColor; 
    } 
} 

En mi preferences.xml que crear una instancia de esa preferencia como MyCheckBoxPreference en lugar de sólo CheckBoxPreference:

<org.yourpackage.MyCheckBoxPreference 
       android:title="@string/preference_title_activate" 
       android:defaultValue="false" 
       android:summary="@string/preference_summary_activate_off" 
       android:summaryOff="@string/preference_summary_activate_off" 
       android:key="preference_activate"> 
</org.yourpackage.MyCheckBoxPreference> 

El MyCheckBoxPreference tiene que crearse una instancia antes de recuperar el color de resumen con MyCheckBoxPreference.getSummaryColor().

Ahora puede establecer el color de otras preferencias personalizadas de onBindView (Ver):

public class MyCustmizedPreference extends Preference { 
    public MyCustmizedPreference (Context context) { 
     super(context); 
     setLayoutResource(R.layout.my_customized_preference); 
    } 

    @Override 
    public void onBindView(View view) { 
     super.onBindView(view); 

     TextView summaryView = (TextView) view.findViewById(android.R.id.summary); 
     if (summaryView != null) { 
      summaryView.setTextColor(MyCheckBoxPreference.getSummaryColor()); 
     }   
    } 
} 

En realidad funciona bajo el Samsung Galaxy S. También he probado que no se rompe nada bajo el emulador.

+0

su código me ayudó a utilizar onBindView() para cambiar el color del texto del resumen que no pude realizar con SpannableString para ListPreference en ICS. – Tomcat

0

Tuve el mismo problema y he estado experimentando con el estilo personalizado de preferencia de la barra de búsqueda. Finalmente estas líneas en onCreateView método de seekBarPreference.java muestran Resumen de preferencia con el color de texto predeterminado:

TextView summaryText = new TextView(getContext()); 
summaryText.setText(getSummary()); 
summaryText.setTextAppearance(getContext(), android.R.style.TextAppearance_Small); 

lo uso en preference_screen.xml:

<com.asdasf.SeekBarPreferencias 
     android:key="@string/pref_seekBar_distance_key" 
     android:id="@+id/mySeekBarPreference" 
     android:title="@string/pref_seekBar_distance_title" 
     android:summary="@string/pref_seekBar_distance_summary"   
     android:max="50" 
     android:defaultValue="12" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

espero que sea útil ... (y que tengo escrito bien mi primera respuesta) ¡Atención!

Cuestiones relacionadas