2013-06-11 13 views
5

Devo aggiungere uno GLSurfaceView a FrameLayout in un PopupWindow. Il problema è che, internamente, lo SurfaceView richiede il token dalla finestra corrente. PopupWindows non hanno i propri token, quindi gli ho dato il token dal genitore a comparsa, invece, in questo modo:GLSurfaceView in a PopupWindow

class MySurfaceView extends GLSurfaceView { 
    ... 
    @Override 
    public IBinder getWindowToken() { 
     // I set the mPopupParent manually to be the parent of the PopupWindow in question 
     return mPopupParent.getWindowToken(); 
    } 
    } 
    ... 
} 

Ora, anche se MySurfaceView viene aggiunto a una FrameLayout che è il contenuto del PopupWindow, si non attira lì. Si basa sul punto di vista di cui ho ricevuto il token.

Come posso ottenere che disegni sul layout a cui è effettivamente aggiunto?

MODIFICA: Solo per fornire ulteriori dettagli, nel caso in cui faccia la differenza, mPopupParent è una vista IME (una tastiera, in sostanza).

+0

Devi stare bastone per il 'PopupWindow'? Penso che dovresti usare un semplice 'Activity' con il tema' Dialog'. –

+0

Sto lavorando su un IME, non ci sono attività con cui lavorare, sfortunatamente. –

+1

Hai provato ad aggiungere SurfaceView direttamente a 'WindowManager' tramite' addView'? – Delyan

risposta

0
I got something just like yours,and finally these ways work out: 

A. Utilizzare una finestra di dialogo

B. Usare l'android.view.WindowManager