Guten Tag alle,Ändern Sie die Farben, wenn die Ebenen in dieser Zeichnung
Ich versuche, die Farben in diesem Zeichen dynamisch zu ändern.
Der ziehbare XML ist:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/status_colour_outer"
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp">
<shape
android:shape="oval">
<solid android:color="@color/red"/>
</shape>
</item>
<item android:id="@+id/status_colour_inner">
<shape
android:shape="oval">
<stroke
android:width="2dp"
android:color="@color/red"/>
</shape>
</item>
</layer-list>
i müssen beide Schichten auf die gleiche Farbe aus einer dynamisch Webservice Antwort ändern.
Der folgende Code funktioniert nur, aber nur ändert die
@ + id/status_colour_inner
Farbe, aber ändert nichts an der Außen doch verweist die Ebene:
LayerDrawable layers = (LayerDrawable) ContextCompat.getDrawable(getContext(), R.drawable.status_colour);
GradientDrawable shape = (GradientDrawable) layers.findDrawableByLayerId(R.id.status_colour_inner);
GradientDrawable shape1 = (GradientDrawable) layers.findDrawableByLayerId(R.id.status_colour_outer);
shape.setColor(Color.parseColor(mColours.getDisplayClasses().get(position).getColour()));
shape1.setColor(Color.parseColor(mColours.getDisplayClasses().get(position).getColour()));
aView.setBackground(layers);
mColours.getDisplayClasses(). Get (position) .getColour()
all dies tut, ist ein String der Farbe zurückgeben wie „# B5FFC9“
Es funktioniert gut für die eine Schicht, innere Schicht aber wenn ich gradientDrawable shape1 = (GradientDrawable) layers.findDrawableByLayerId (R.id.status_colour_outer); auf der äußeren Schicht gilt nicht diese Farbe – x10sion
überprüfen [this] (http://stackoverflow.com/questions/26561812/android-xml-layer-list-not-displayed-correctly-on-some-devices/26859663) Lassen Sie niemals Formen mit Rand ohne Farbe, da einige Geräte es schwarz malen! – rafsanahmad007