Ich möchte eine RecyclerView
erstellen, die einen Selektor über seine Elemente zeichnet. Es sollte auf den Items gerendert werden, das bedeutet, ich kann nicht einfach einen StateListDrawable
als Item-Hintergrund setzen.RecyclerView: Wie simuliert man den Draw Selector von ListView oben?
Ich bin besonders interessiert an der gedrückten Zustand, d. H. Etwas sollte gezeichnet werden, wenn (und nur wenn) ein Element gedrückt wird.
RecyclerView.ItemDecoration
kann Objekte einer RecyclerView
überzeichnen. Hier ist, was ich versucht habe, so weit:
public final class ItemPressedDecoration extends RecyclerView.ItemDecoration {
private final Rect rect = new Rect();
@Override
public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) {
final int count = parent.getChildCount();
for (int index = 0; index < count; index++) {
final View child = parent.getChildAt(index);
if (child.isPressed()) {
drawOverlay(c, child);
}
}
}
private void drawOverlay(Canvas c, View child) {
c.save();
rect.set(child.getLeft(), child.getTop(), child.getRight(), child.getBottom());
c.clipRect(rect);
c.drawColor(0x80ff0000);
c.restore();
}
}
Das Problem ist, dass RecyclerView
das Element nicht Dekoration, wenn der ziehbar Zustand eines seiner Kinder Veränderungen scheint neu zu zeichnen. Also, wie bekomme ich das hin?
Ich habe versucht, eine RecyclerView.OnItemTouchListener
hinzufügen und recyclerView.invalidate()
von seiner onInterceptTouchEvent()
Methode aufrufen, aber das hat nicht funktioniert.
für mich gearbeitet .. –