2010-11-02 9 views
5

Ich habe meine App in einem echten Telefon installiert, und obwohl im Emulator alle Texte der Präferenzen Zusammenfassungen scheinen in der gleichen Farbe zu sein, in dem echten Telefon ist die Farbe anders (eine Art blau ... aber ich denke, es hängt vom Modell des Telefons ab).Android Voreinstellungen Zusammenfassung Standardfarbe?

Wie kann ich diese Farbe auf meine benutzerdefinierte Vorzugskomponente einstellen? (Ich habe meine eigene Suchleiste implementiert, und die zusammenfassende Textfarbe unterscheidet sich von allen anderen Komponenten Textfarbe ...).

Danke!

+0

Sind die Farbressourcen in Ordnung? : http://developer.android.com/guide/topics/resources/providing-resources.html – ykatchou

+0

Wir haben versucht, die Farbe des Textes auf android.R.color.white einzustellen; zum Beispiel, aber es wird einfach schwarz. – Jason

+0

Haben Sie etwas anderes als eine android.R.color Ressource versucht. Das wäre dumm, aber Hersteller können diese Werte ändern ... und es würde alle auf dem Gerät installierten Apps betreffen. Versuchen Sie vielleicht einen benutzerdefinierten Wert wie #fff. – grattemedi

Antwort

2

Ich fand diese: android:textAppearance="?android:attr/textAppearanceLarge" und android:textAppearance="?android:attr/textAppearanceSmall" scheinen den Trick zu tun .

1

Ich glaube nicht, dass das möglich ist. Ich bin in der Lage, die Hintergrundfarbe und die Titeltextfarbe, aber nicht die Zusammenfassungsfarbe zu ändern.

Hintergrund:

getListView().setBackgroundColor(Color.TRANSPARENT); 

Titeltext:

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

Leider habe ich nicht mehr helfen konnte ...

+1

Ich kann die Farbe der sommerlichen ändern, aber ich kann nicht herausfinden, wie man es mit der Systemfarbe übereinstimmt, zum Beispiel mein Galaxy S Telefon hat verschiedene Systemfarben für Vorlieben dann andere Telefone – Jason

+0

Jason; Wie änderst du die Präferenzfarbe? – Emmanuel

2

Die Samsung Galaxy S-Telefone haben ein eigenes Preference-Layout mit der für die Zusammenfassung angegebenen Textfarbe. Obwohl TextAppearance.Small angegeben ist, überschreibt das TextColor-Attribut des Layouts die Textdarstellung.

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

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

3

Ich habe einen Weg gefunden, die Standardfarbe von der Android-Gerät Ihre Anwendung in ausgeführt wird verwendet, abgerufen werden. Es ist ein bisschen schwierig und requieres ist, dass Sie die Farbe Wesen abrufen aus einer anderen Präferenzzusammenfassung angezeigt. Zeigen Sie Ihre Aktivität an und speichern Sie sie in Runtime.

Dann können Sie den gleichen Farbcode in anderen Ansichten anderer Einstellungen verwenden, so dass Sie immer den gleichen Farbcode erhalten, den Android den Standardeinstellungen zugewiesen hat. Hier ist, wie ich es gemacht habe:

Meine Einstellungen Aktivität hat eine normale CheckBoxPreference, die ich zum Aktivieren oder Deaktivieren eines Dienstes verwenden. Ich habe CheckBoxPreference wie folgt erweitert, so dass meine Erweiterung ruft in RUTime die Standardfarbe Android schließlich auf die Zusammenfassung dieser CheckBoxPreference gab:

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

In meinem preferences.xml instanziiert ich diese Vorliebe als MyCheckBoxPreference statt nur CheckBoxPreference:

Die MyCheckBoxPreference muss einmal vor dem Abrufen der Zusammenfassungsfarbe mit MyCheckBoxPreference.getSummaryColor() instanziiert werden.

Jetzt können Sie die Farbe von anderen kundenspezifischen Einstellungen von onBindView (View) gesetzt:

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

Es funktioniert tatsächlich unter Samsung Galaxy S. habe ich auch getestet, dass es nicht alles unter dem Emulator nicht bricht.

+0

Ihr Code hat mir geholfen, onBindView() zu verwenden, um die Textfarbe der Zusammenfassung zu ändern, die ich mit SpannableString für ListPreference in ICS nicht ausführen konnte. – Tomcat

0

Ich hatte das gleiche Problem und experimentierte mit dem Stil meiner benutzerdefinierten Suchleiste. Schließlich diese Linien in onCreateView Methode der seekBarPreference.java Zusammenfassung mit Standardtextfarbe Präferenz zeigen:

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

Ich benutze es auf 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" /> 

Ich hoffe, dass es nützlich sein wird ... (und dass ich geschrieben gut meine erste Antwort) Achtung!

Verwandte Themen