Ich habe eine App geschrieben, die auf Farben in Ressourcen definiert basiert. Einige werden direkt in der XML-Layoutdatei festgelegt, andere werden in Code festgelegt. Beispiele:android: textColor funktioniert nicht mehr in Marshmallow
Farbdefinition in res/values/styles.xml
:
<color name="orvGyro">#33B5E5</color>
Layout:
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dotSpace"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/orvGyro" />
Farbe in Code:
accStatus.setTextColor(getResources().getColor(R.color.somecolor));
Die App Ziele API 17. Bis Lollipop, hat dies funktionierte einwandfrei und zeigte die richtigen Farben. Nach der Migration zu Marshmallow (Cyanogenmod 13) werden alle diese Farben orange angezeigt. Andere Farben, die in Java-Code und nicht in Ressourcen definiert sind, scheinen korrekt angezeigt zu werden.
Ich habe versucht, die Ziel-API auf 23 zu ändern und Stile für API 21+ hinzuzufügen, ohne Erfolg.
Was ist hier falsch? Ist das ein Fehler in CyanogenMod13 oder mache ich etwas falsch?
EDIT: Es scheint, es geht nicht darum, die Farbe aus der Ressource zu bekommen. Hartcodierung die Farben, wie unten auch gezeigt, gibt mir orange Text:
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/dotSpace"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#669900" />
EDIT 2: Gerade kam über Android M Developer Preview - TextView android:textColor being ignored. Könnte das mein Verhalten erklären?
BEARBEITEN 3: Wenn ich Inhalte dynamisch erzeuge, anstatt Layouts zu verwenden, werden die Farben korrekt angezeigt. Beispiel:
TextView newType = new TextView(rilLteCells.getContext());
newType.setLayoutParams(new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 2));
newType.setTextAppearance(rilLteCells.getContext(), android.R.style.TextAppearance_Medium);
newType.setTextColor(rilLteCells.getContext().getResources().getColor(getColorFromGeneration(cell.getGeneration())));
newType.setText(rilLteCells.getContext().getResources().getString(R.string.smallDot));
row.addView(newType);
Was würde ich mit Farben machen, die ich direkt im Layout einstelle? – user149408
Es wird die entsprechende Farbe von Ihrer Farbressource nehmen. –
Genau das funktioniert nicht. Auch wenn ich eine Farbressource im Layout anwähle, wird sie als Orange angezeigt. – user149408