我正在使用ViewPager
来显示FragmentPagerAdapter
提供的几个片段。其中一个Fragments
显示VideoView
和MediaController
。
我面临的问题是,MediaController
不会向左/右滑动,因为它应该与Fragment
的其余部分一起滑动。 (希望你能跟着我^^)
我在StackOverflow上看了很多类似的讨论,但不幸的是没有一个能解决我的问题。
这是适配器实例化的Fragment
的 xml :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<VideoView
android:id="@+id/vv_project_details"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
这是代码属于onCreateView
的{{1}}:
Fragment
一切正常,除了浏览我的 final VideoView vv = (VideoView) rootView
.findViewById(R.id.vv_project_details);
vv.setVideoURI(Uri uri = new Uri("some-uri"));
mMediaController = new MediaController(getActivity(), false); // should I use rootView.getContext() instead of getActivity()?
vv.setMediaController(mMediaController);
vv.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaController.setAnchorView(vv);
mMediaController.show(0);
}
});
,Fragments
出现已修复 ...: - /
编辑:这是在2 MediaController
之间滑动时制作的屏幕截图。如您所见,Fragments
仍处于初始位置......
答案 0 :(得分:1)
我遇到了同样的问题,我执行以下操作来手动隐藏/显示控制器:
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == Tabs.NOWPLAYING.ordinal())
tabPagerAdapter.getNowPlayingFragment().show();
else
tabPagerAdapter.getNowPlayingFragment().hide();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
它需要重构,因为在尝试隐藏之前它不会检查控制器是否实际显示。如果你有两个以上的标签,这很重要。