MediaController在ViewPager中无法滑动

3
我正在使用一个ViewPager来展示由FragmentPagerAdapter提供的几个片段。其中一个Fragments显示了一个VideoView和相应的MediaController

我面临的问题是,MediaController不能像其他Fragment一样向左/右滑动。(希望你能理解我^^)

我已经查看了许多类似的StackOverflow讨论,但不幸的是,它们中没有一个可以解决我的问题。

这是由适配器实例化的Fragmentxml

<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>

这段代码属于FragmentonCreateView方法:

    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);

        }
    });

一切都运行良好,除了在滑动我的碎片时,MediaController出现了固定的问题... :-/

编辑:这是在两个Fragments之间滑动时拍摄的屏幕截图。正如您所看到的,MediaController仍然保持在其初始位置...

Screenshot showing that the Mediacontroller remains at its inital position while swiping


我也尝试通过编程方式生成“VideoView”,因为我认为在不同的“Fragments”中拥有相同ID的多个“VideoViews”可能会出现问题,但这也没有改变任何事情... - FranBran
1个回答

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) {

        }
    });

尽管它没有检查控制器是否正在显示就尝试隐藏,但它需要进行重构。如果你有超过两个选项卡,这很重要。


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