关于如何定位 MediaController
的讨论很多,大多数答案都是使用 setAnchorView
方法。乍一看,这个解决方案似乎可行,但在我的例子中却行不通。
根据这个Post setAnchorView
仅作为 MediaController
初始定位的引用,但实际上在其上创建了一个新的 float Window
。
所以我想要的是 MediaController
,它真正绑定(bind)到父 View
(例如 VideoView)。
例如,如果您在 ScrollView
中有一个 LinearLayout
,您必须向下滚动到您的 VideoView
,其中 MediaController
附加到,MediaController
应该真正附加到此 VideoView
,以便 MediaController
与 VideoView< 一起滚动
.
讨论了出现此问题的另一个用例 here ,其中 MediaController
在 ViewPager
中使用。
那么如何为 MediaController
实现这样的行为呢?
最佳答案
我最后做了一个肮脏的 hack...我只是手动将 View 附加到我的 videoView
以实现想要的行为:
public void onPrepared(MediaPlayer mp) {
MediaController mc = new MediaController(videoView.getContext(), false);
// set correct height
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) videoView.getLayoutParams();
params.height = mp.getVideoHeight();
videoView.setLayoutParams(params);
videoView.setMediaController(mc);
pBar.setVisibility(View.GONE);
mc.show(0);
FrameLayout f = (FrameLayout) mc.getParent();
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_BOTTOM, videoView.getId());
((LinearLayout) f.getParent()).removeView(f);
((RelativeLayout) videoView.getParent()).addView(f, lp);
mc.setAnchorView(videoView);
}
此解决方案的问题是,设置 anchorView 没有任何效果,因此点击 VideoView
不会隐藏/显示 MediaController
应该。
肯定有更好的解决方案,希望有人能给我提示!
关于android - MediaController 定位 - 绑定(bind)到 VideoView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22637413/