In Ordnung, ich hatte ein schnelles Spiel damit und bemerkte, dass dein Problem mit den Kreisen verschwand. Ohne Sie beschreiben was genau Sie ausprobiert, ich nehme an, Sie haben nicht versucht, den Farbfilter auf die Drawable
selbst noch zu setzen? (im Gegensatz zu der ImageView
, die nur mit BitmapDrawable
s scheint).
die folgenden Anweisungen arbeiten für eine xml-deklarierten ShapeDrawable
mit weißer als Anfangsfarbe völlig in Ordnung:
ImageView redCircle = (ImageView) findViewById(R.id.circle_red_imageview);
ImageView greenCircle = (ImageView) findViewById(R.id.circle_green_imageview);
ImageView blueCircle = (ImageView) findViewById(R.id.circle_blue_imageview);
// we can create the color values in different ways:
redCircle.getDrawable().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);
greenCircle.getDrawable().setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY);
blueCircle.getDrawable().setColorFilter(getResources().getColor(R.color.blue), PorterDuff.Mode.MULTIPLY);
Die ShapeDrawable
der Vollständigkeit halber: (habe ich die Größe auf dem ImageView
, siehe unten)
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
<solid android:color="@android:color/white" />
</shape>
Und einer der ImageView
s als Beispiel:
<ImageView
android:id="@+id/circle_red_imageview"
android:layout_width="40dp"
android:layout_height="40dp"
android:padding="5dp"
android:src="@drawable/circle_white" />
Visuelles Ergebnis:
Sie könnten [diese verwandten Q & A] (http://stackoverflow.com/questions/4354939/understanding-the-use-of-colormatrix-and-colormatrixcolorfilter-to-modify-a-draw) interessant finden. –
Sorry, aber ich konnte dort nichts finden, was mit dieser Frage zusammenhängt. – aplavin
Ich bin mir nicht sicher, wie Sie die akzeptierte Antwort nicht finden können ... Wie auch immer, hier ist ein weiteres ähnliches Thema: [link] (http://stackoverflow.com/q/1309629/1029225). Wie dort vorgeschlagen, versuchen Sie: 'imgView.setColorFilter (0xff00ffff, PorterDuff.Mode.MULTIPLY);'. Wenn das Ihren Bedürfnissen nicht entspricht, wird auch hier eine anspruchsvollere Lösung vorgeschlagen. –