2017-02-28 8 views
0

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“

Antwort

0

versuchen, die Aktivität context mit dem Drawable zu bekommen:

LayerDrawable layers = (LayerDrawable) ContextCompat.getDrawable(YourActivity.this,R.drawable.your_shape) 
+0

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

+0

ü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

Verwandte Themen