MediaController定位 - 绑定到VideoView

Fra*_*ran 10 android android-layout mediacontroller android-view android-videoview

有很多关于如何定位的讨论MediaController,大多数答案都是使用setAnchorView-Method.乍一看这个解决方案似乎有效但在我的情况下却没有.

根据这篇文章 setAnchorView仅作为初始定位的参考MediaController,但实际上创造了一个新的浮动Window顶部.

所以,我要的是一个MediaController真的绑定到父View(例如VideoView).

例如,如果你有一个LinearLayout内部的ScrollView,你必须向下滚动到您VideoViewMediaController连接到时,MediaController应该被附加到这个VideoView使MediaController滚动随着VideoView.

这里讨论了这个问题困扰的另一个用例,其中MediaController使用了一个ViewPager.

那么如何实现这样的行为MediaController呢?

Fra*_*ran 8

我最后做了一个肮脏的黑客...我只是手动将视图附加到我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它应该的.

绝对是一个更好的解决方案,希望有人可以给我一个提示!