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.
Sind die Farbressourcen in Ordnung? : http://developer.android.com/guide/topics/resources/providing-resources.html – ykatchou
Wir haben versucht, die Farbe des Textes auf android.R.color.white einzustellen; zum Beispiel, aber es wird einfach schwarz. – Jason
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