2013-06-11 27 views
5

Tôi cần thêm GLSurfaceView vào FrameLayout trong một PopupWindow. Vấn đề là, trong nội bộ, yêu cầu SurfaceView mã thông báo từ cửa sổ hiện tại. PopupWindows không có thẻ riêng của họ, vì vậy tôi cho nó token từ popup mẹ thay vào đó, như vậy:GLSurfaceView trong 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(); 
    } 
    } 
    ... 
} 

Bây giờ, mặc dù MySurfaceView được thêm vào một FrameLayout đó là nội dung của PopupWindow, nó không vẽ ở đó. Nó dựa trên quan điểm mà tôi nhận được mã thông báo.

Tôi làm cách nào để vẽ trên bố cục nó thực sự được thêm vào?

CHỈNH SỬA: Chỉ để cung cấp thêm một số chi tiết, trong trường hợp nó tạo sự khác biệt, mPopupParent là chế độ xem IME (bàn phím, về cơ bản).

+0

Bạn phải tuân thủ 'PopupWindow'? Tôi nghĩ bạn nên sử dụng 'Hoạt động' đơn giản với chủ đề' Dialog' thay thế. –

+0

Tôi đang làm việc trên IME, không có Hoạt động để làm việc với, thật không may. –

+1

Bạn đã thử thêm SurfaceView trực tiếp vào 'WindowManager' qua' addView' chưa? – Delyan

Trả lời

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

A. Sử dụng Hộp thoại

B. Sử dụng android.view.WindowManager

Các vấn đề liên quan