在PopupWindow中使用GLSurfaceView

5

我需要在一个PopupWindow中的FrameLayout中添加一个GLSurfaceView。问题是,内部SurfaceView请求当前窗口的令牌。 PopupWindows没有自己的令牌,所以我将它从弹出父级获取的令牌传递给它,如下所示:

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();
    }
  }
  ...
}

现在,即使MySurfaceView被添加到作为PopupWindow内容的FrameLayout中,它也不会在那里绘制。它会在我从中获取令牌的视图上进行绘制。 如何让它在实际添加到的布局上进行绘制?
编辑: 为了提供更多细节,以防对结果有影响,mPopupParent是一个IME视图(基本上是一个键盘)。

你必须坚持使用 PopupWindow 吗?我认为你应该改用带有 Dialog 主题的普通 Activity - a.bertucci
我正在开发一个输入法,但不幸的是没有可用的Activity。 - Błażej Czapp
1
你尝试过通过addView直接将SurfaceView添加到WindowManager吗? - Delyan
是的,它填满了整个屏幕。这是一个解决方案,但不是特别好的解决方案。到目前为止,我只能将拥有令牌窗口与我的弹出窗口对齐并使其不可见,以便表面视图似乎在弹出窗口上方,但这显然不是非常健壮的解决方案。 - Błażej Czapp
2
您考虑使用TextureView了吗?它不会受到SurfaceView的限制。 - Romain Guy
非常接近了 - 看起来是一个很好的选择,但只能从API v14开始使用(我需要支持v8)。 我在支持库中也没有看到它... - Błażej Czapp
1个回答

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

A. 使用对话框

B. 使用android.view.WindowManager


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接