2013-06-11 20 views
5

Muszę dodać GLSurfaceView do FrameLayout w PopupWindow. Problem polega na tym, że wewnętrznie SurfaceView żąda tokena z bieżącego okna. PopupWindows nie mają własne znaki, więc daję mu żeton z podręcznego rodzica zamiast, tak jak poniżej:GLSurfaceView w 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(); 
    } 
    } 
    ... 
} 

Teraz, mimo MySurfaceView dodano do FrameLayout czyli zawartość PopupWindow, to nie rysuje tam. Opiera się na widoku, z którego otrzymałem token.

W jaki sposób mogę go pobrać na podstawie układu, do którego został dodany?

EDYTOWANIE: EDIT: Aby podać więcej szczegółów, w przypadku, gdy robi różnicę, mPopupParent jest widokiem IME (klawiatura zasadniczo).

+0

Musisz trzymać się 'PopupWindow'? Myślę, że powinieneś zamiast tego użyć zwykłego 'Activity' z motywem' Dialog'. –

+0

Pracuję nad edytorem IME, niestety nie działa żadna czynność. –

+1

Czy próbowałeś dodać SurfaceView bezpośrednio do 'WindowManager' przez' addView'? – Delyan

Odpowiedz

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

A. Użyj okna Dialog

B. Użyj android.view.WindowManager

Powiązane problemy