2 Stimmen

Wie man ein Drawable mit einem Farbverlauf in einem ListView's gedrückt Zustand verwenden?

Ich bin derzeit mit einem drawable für alle meine Tasten, die einen Farbverlauf über sie bekommt, wenn Sie die Taste drücken. Ich erreiche diesen Effekt, indem ich die verschiedenen Druckzustände und eine layer-list .

Jetzt versuche ich, denselben Effekt mit einer ListView . Ich kann ein anderes Bild als Hintergrund für ein Objekt in der Liste anzeigen, wenn ich darauf klicke, aber immer wenn ich versuche, ein Bild mit einem separaten Farbverlauf hinzuzufügen, wird es mit der Standard-Android-Farbe angezeigt, wenn ich auf ein Objekt in der Liste klicke. ListView . Aber es zeigt meinen benutzerdefinierten Farbverlauf auf dieser Standardfarbe.

Ich weiß, das klingt etwas vage, deshalb habe ich einige Screenshots gemacht, um die Wirkung zu zeigen:

Schaltfläche mit Farbverlaufs-Overlay, funktioniert gut

enter image description here

ListView mit einem Hintergrund pro Objekt funktioniert nicht, wenn dieses Bild zusammen mit einem Farbverlaufs-Overlay verwendet wird

enter image description here

Die Zeichenfläche, die ich als Hintergrundbild für die ListView

enter image description here

Woran kann es liegen, dass der Farbverlauf auf der Schaltfläche funktioniert, aber nicht auf der ListView ? Wie ich schon sagte, funktioniert die Verwendung eines völlig anderen Bildes für den gedrückten Zustand gut, aber die Verwendung des Hintergrundbildes plus eines Farbverlaufs nicht.

Code für die ListView gedrückte Zustände

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Active tab -->
    <item android:drawable="@drawable/list_gradient" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>
    <!-- Inactive tab -->
    <item android:drawable="@drawable/button_listpage_77px" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
    <!-- Pressed tab -->
    <item android:drawable="@drawable/list_gradient" android:state_pressed="true"/>
    <item android:drawable="@drawable/button_listpage_77px" />

</selector>

list_gradient.xml

    </item>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#8858585a" android:endColor="#88a9a9a9"/>
        </shape>
    </item>
</layer-list>

Nachdem ich heute ein paar Stunden lang herumgetüftelt habe, konnte ich mein Problem immer noch nicht lösen. Ich weiß, dass ich etwas übersehe, aber ich kann nicht herausfinden, was. Hat jemand eine Idee?

3voto

Sander van't Veer Punkte 5890

Nachdem ich alles noch einmal durchgegangen bin und alle ähnlichen Fragen hier auf SO noch einmal gelesen habe, ist mir aufgefallen, dass ich nirgendwo in meinen Dateien 'Android:listSelector` verwendet habe.

Nachdem ich Folgendes in meinem ListView :

android:listSelector="#00000000" mein ListView Ich habe mich so verhalten, wie ich es wollte!

Ich dachte mir, dass die ListView würde genauso funktionieren wie alle anderen Tasten, aber ich habe mich geirrt. Lernen Sie aus meinem Fehler, es könnte Ihnen eine ganze Menge Zeit sparen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X