Ich versuche, eine RippleDrawable
als Hintergrund zu einer Listenansicht Zeile festzulegen. Bei der Verwendung von view.setBackgroundResource(R.drawable.ripple)
funktioniert alles gut. WennsetBackgroundResource verhält sich anders als setBackground mit RippleDrawable
view.setBackground(view.getContext().getDrawable(R.drawable.ripple))
versucht, es funktioniert, aber die Welligkeit zeigt nicht, wenn schnell den Punkt zu berühren (Ich habe auch einen aktivierte/Überprüfungsstatus für das Element), es erscheint nur, wenn ich die gedrückte Ansicht halten.
Die setBackgroundResource Methode in View-Klasse sieht wie folgt aus:
if (resid != 0 && resid == mBackgroundResource) {
return;
}
Drawable d = null;
if (resid != 0) {
d = mContext.getDrawable(resid);
}
setBackground(d);
mBackgroundResource = resid;
so dass im Grunde die genaue Sache, die ich manuell zu tun versuche.
HINWEIS: Ich möchte setBackground-Methode verwenden, weil ich die RippleDrawable programmatisch erstellen möchte.
Hat jemand eine Idee, warum das passiert?
Ich muss Ich habe einen "aktivierten" Status für die Listenzeile und die Art, wie ich es geschafft habe, war, indem ich einen Hintergrund der Ansicht direkt und keinen 'listSelector' verwendet habe. Die Ripple funktioniert gut mit diesem Ansatz, es ist nur, dass ich versuchen muss, einen Weg zu finden, den Status "activated" korrekt zu haben. Es erscheint mir immer noch merkwürdig, dass es mit 'setBackgroundResource' gut funktioniert, aber mit' setBackgroundDrawable' nicht. Hast du eine Ahnung davon? – GeorgeP