Vorrei creare uno RecyclerView
che disegna un selettore sopra i suoi elementi. Dovrebbe essere visualizzato sopra gli articoli, il che significa che non posso semplicemente impostare uno StateListDrawable
come sfondo dell'elemento.RecyclerView: come simulare il selettore di disegno di ListView in cima?
Sono particolarmente interessato allo stato premuto, vale a dire qualcosa che deve essere disegnato se (e solo se) viene premuto un elemento.
RecyclerView.ItemDecoration
è in grado di disegnare su articoli di RecyclerView
. Ecco quello che ho provato finora:
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();
}
}
Il problema è che RecyclerView
non sembra ridisegnare la decorazione oggetto se lo stato drawable di uno dei suoi figli cambiamenti. Quindi, come faccio a farlo?
Ho provato ad aggiungere uno RecyclerView.OnItemTouchListener
e chiamare recyclerView.invalidate()
dal suo metodo onInterceptTouchEvent()
ma quello non ha funzionato.
lavorato per me .. –