1

Ich habe zwei imageView, dass, wenn angeklickt, nehmen sie colorAccent 's Farbe. Dies scheint auf Lollipop und Marshmallow zu funktionieren, aber nicht auf KitKat. Plus, wenn sie nicht angeklickt werden, sollten sie grau sein, aber auf Kitkat sind sie immer schwarz. Hier ein Beispiel:Android - imageView habe keine FarbeAkzent Farbe auf KitKat

Hier ist mein Code:
Colors.xml

<color name="colorPrimary">#3F51B5</color> 
<color name="colorPrimaryDark">#303F9F</color> 
<color name="colorAccent">#FF4081</color> 
<color name="itemNotSelected">#bdbdbd</color> <!-- this is GREY --> 

Ein Beispiel dafür, wie ich versuche, die Farbe zu ändern, wenn ich auf imageView klicken:

if(REPEAT_CLICKED == REPEAT_DISABLED) { 
       REPEAT_CLICKED = REPEAT_ALL; 
       mRepeatButton.setImageResource(R.drawable.vector_repeat_all); 
      } 

vector_repeat_all.xml:

<vector android:height="96dp" android:viewportHeight="24.0" 
android:viewportWidth="24.0" android:width="96dp" xmlns:android="http://schemas.android.com/apk/res/android"> 
<path android:fillColor="@color/colorAccent" android:pathData="M7,7h10v3l4,-4 -4,-4v3L5,5v6h2L7,7zM17,17L7,17v-3l-4,4 4,4v-3h12v-6h-2v4z"/> 

Wie kann ich es lösen?

+0

Kit Kat unterstützt keine Vektorzeichen. Verwenden Sie die Support-Bibliothek? –

+0

Yup, in der Tat kann ich tatsächlich Vektor Drawables sehen, auch wenn nicht in der entworfenen Farbe – Sabatino

Antwort

0

Verschieben Sie Ihre gewünschte Farbe auf android:tint und lassen Sie den Pfad eine beliebige Farbe haben.

<vector 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:tint="?colorAccent" 
    android:height="96dp" 
    android:viewportHeight="24.0" 
    android:viewportWidth="24.0" 
    android:width="96dp"> 
    <path android:fillColor="#FF000000" android:pathData="M7,7h10v3l4,-4 -4,-4v3L5,5v6h2L7,7zM17,17L7,17v-3l-4,4 4,4v-3h12v-6h-2v4z"/> 
</vector> 

Diese 21 auf API arbeiten und über die Box aus und unter API 21, wenn:

  • Das Bild zuordnen über app:srcCompat auf einer ImageView in XML-Layout von AppCompat aufgeblasen
  • Anruf setImageResource(int) auf einem ImageView von AppCompat aufgeblasen
  • Anruf setImageResource(int) auf einem new AppCompatImageView(...)

Quelle: So macht es AppCompat intern.

+0

Nein, es funktioniert nicht:/ – Sabatino

+0

Haben Sie 'neue ImageButton (...)' geschrieben? Repariere es auf 'new AppCompatImageButton (...)'. –

+0

Ich habe es auf support libs Version 24.1.1 getestet. Welche Version verwendest du? –