2011-01-28 16 views
12

Ok, ecco l'accordo. Voglio spostare gli elementi nella mia classe galleria estesa per modificare l'ordine delle immagini. Il modo in cui lo sto facendo ora:onDraw() su Visualizza disegna dietro il layout

  • sulla pressione lunga rimuovere l'elemento selezionato corrente,
  • uso onDraw() per disegnare la stessa immagine in modo che io possa spostarla utilizzando onTouchEvent()
  • sul rilascio di aggiungere la voce di nuovo

Questo funziona bene ma il problema è che quando si utilizza il metodo onDraw() si disegna l'immagine dietro gli elementi della galleria. C'è un modo per cambiare la priorità di ciò che viene disegnato?

+0

Stai chiamando super.onDraw() dopo aver fatto disegnare l'immagine? – pankajagarwal

+0

Bene, l'immagine nella galleria è disegnata dalla galleria, quindi non ne ho il controllo. voglio solo disegnare quelle immagini all'interno della classe galleria estesa – Nick

risposta

33

Beh ho trovato questo fuori dopo essere andato in una direzione totalmente diversa =/

Ecco la soluzione per le persone che hanno lo stesso problema:

nel costruttore (o in qualsiasi altro si inizializza il componente) set setWillNotDraw(false) e sovrascrivi dispatchDraw(). dispatchDraw() disegna i bambini ViewGroup in modo da poter decidere se si desidera disegnare dietro o una cima delle altre visualizzazioni.

esempio tratto dalla Custom drawing on top of Gallery view (and it's child views)

@Override 
protected void dispatchDraw(Canvas canvas) { 
    super.dispatchDraw(canvas); 

    // do your drawing stuff here 
    canvas.drawPath(mPath,mPaint); 
} 
+2

+1 in quanto è difficile trovare queste informazioni cercando. Utilizzato con successo questo approccio per disegnare la guida su schermo su GridView. Errore di battitura: setWillNotDraw (false) dovrebbe essere chiamato; willNotDraw() è il getter per lo stesso parametro. N.B .: setWillNotDraw (false) disabilita le ottimizzazioni che presuppongono che un ViewGroup si basi interamente sulle sue viste secondarie per disegnare se stesso. – Carl

+0

Si prega di condividere più codice di esempio. È davvero facile da capire guardando il codice. +1 entrambi –

+0

Nick ti ricordi ancora questo? sovrascrivi dispatchDraw() sulle immagini della galleria o nella visualizzazione personalizzata? O stai facendo tutto in un'unica vista? Qualsiasi aiuto apprezzato – quinestor

Problemi correlati