Fra*_*ran 10 android android-layout mediacontroller android-view android-videoview
有很多关于如何定位的讨论MediaController,大多数答案都是使用setAnchorView-Method.乍一看这个解决方案似乎有效但在我的情况下却没有.
根据这篇文章 setAnchorView仅作为初始定位的参考MediaController,但实际上创造了一个新的浮动Window顶部.
所以,我要的是一个MediaController是真的绑定到父View(例如VideoView).
例如,如果你有一个LinearLayout内部的ScrollView,你必须向下滚动到您VideoView在MediaController连接到时,MediaController应该被附加到这个VideoView使MediaController滚动随着VideoView.
这里讨论了这个问题困扰的另一个用例,其中MediaController使用了一个ViewPager.
那么如何实现这样的行为MediaController呢?
我最后做了一个肮脏的黑客...我只是手动将视图附加到我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);
}
Run Code Online (Sandbox Code Playgroud)
这个解决方案的问题是,设置anchorView没有任何效果,因此点击VideoView它不会隐藏/显示MediaController它应该的.
绝对是一个更好的解决方案,希望有人可以给我一个提示!