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).
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ế. –
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. –
Bạn đã thử thêm SurfaceView trực tiếp vào 'WindowManager' qua' addView' chưa? – Delyan