2010-11-02 15 views
5

Ho installato la mia app in un vero telefono, e anche se nell'emulatore tutti i testi dei riepiloghi delle preferenze sembrano essere dello stesso colore, nel telefono reale il colore è diverso (una specie di blu ... ma immagino dipenda dal modello del telefono).Riepilogo preferenze Android colore predefinito?

Come posso impostare questo colore sul mio componente di preferenza personalizzato? (Ho implementato la mia barra di ricerca, e il suo colore del testo riassuntivo è diverso da tutti gli altri componenti del colore del testo ...).

Grazie!

+0

Le risorse colore sono corrette? : http://developer.android.com/guide/topics/resources/providing-resources.html – ykatchou

+0

Abbiamo provato a impostare il colore del testo su android.R.color.white; per esempio ma diventa nero. – Jason

+0

Hai provato qualcos'altro oltre ad una risorsa android.R.color. Sarebbe stupido, ma i produttori possono cambiare questi valori ... e questo avrebbe ripercussioni su tutte le app installate sul dispositivo. Prova magari un valore personalizzato come #fff. – grattemedi

risposta

2

ho trovato queste: android:textAppearance="?android:attr/textAppearanceLarge" e android:textAppearance="?android:attr/textAppearanceSmall" sembrano fare il trucco .

1

Non credo sia possibile. Sono in grado di modificare il colore di sfondo e il colore del testo del titolo, ma non il colore di riepilogo.

Background:

getListView().setBackgroundColor(Color.TRANSPARENT); 

Testo titolo:

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

Spiacente non ho potuto aiutare di più ...

+1

Posso cambiare il colore dell'estate, Tuttavia non riesco a capire come abbinarlo al colore del sistema, ad esempio il telefono della mia galassia ha diversi colori di sistema per le preferenze di altri telefoni – Jason

+0

Jason; come cambi il colore delle preferenze? – Emmanuel

2

I telefoni Samsung Galaxy S hanno il proprio layout di preferenza con il colore del testo specificato per la riga di riepilogo. Anche se è specificato un oggetto TextAppearance.Small, l'attributo textColor del layout sta sovrascrivendo l'aspetto del testo.

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

ho trovato un modo per recuperare il colore predefinito utilizzato dal dispositivo Android l'applicazione è in esecuzione in. E 'un po' complicato e requieres che si recupera l'essere di colore mostrato da un'altra vista sommaria delle preferenze della tua attività e memorizzarla in runtime.

Quindi è possibile utilizzare lo stesso codice colore in altre visualizzazioni di altre preferenze, assicurando che verrà sempre assegnato lo stesso codice colore Android assegnato alle preferenze standard. Ecco come l'ho fatto:

L'attività delle mie preferenze ha un CheckBoxPreference normale che utilizzo per attivare o disattivare un servizio. Ho esteso CheckBoxPreference come segue, così la mia estensione recupera in Runtime il colore predefinito di Android ha dato finalmente alla sintesi di quel 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; 
    } 
} 

Nel mio preferences.xml ho un'istanza di che la preferenza come MyCheckBoxPreference invece di 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> 

MyCheckBoxPreference deve essere istanziato una volta prima di recuperare il colore di riepilogo con MyCheckBoxPreference.getSummaryColor().

Ora è possibile impostare il colore di altre preferenze personalizzate da onBindView (Visualizza):

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

Funziona in realtà sotto Samsung Galaxy S. Ho anche provato che non si rompe nulla sotto l'emulatore.

+0

il tuo codice mi ha aiutato a usare onBindView() per cambiare il colore del testo del sommario che non ero in grado di eseguire con SpannableString per ListPreference in ICS. – Tomcat

0

Ho avuto lo stesso problema e ho sperimentato lo stile di preferenza della barra di ricerca personalizzata. Infine queste righe nel onCreateView metodo seekBarPreference.java mostrano sintesi di preferenza con il colore del testo predefinito:

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

Io lo uso su 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" /> 

spero che sarà utile ... (e che ho scritto bene la mia prima risposta) Regard!

Problemi correlati