Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中的导航抽屉和视频视图_Android_Navigation Drawer_Android Tablayout_Android Videoview - Fatal编程技术网

android中的导航抽屉和视频视图

android中的导航抽屉和视频视图,android,navigation-drawer,android-tablayout,android-videoview,Android,Navigation Drawer,Android Tablayout,Android Videoview,我使用的是一个导航抽屉和一个表格。我的标签上有一段视频,起初看不见,但我能听到声音。一旦我设定 video_view.setZOrderOnTop(true); 我也可以看到视频,但这会导致导航抽屉出现问题 当我滑动它时,视频不会像所有其他元素一样隐藏在导航抽屉后面 如果我不使用 video_view.setZOrderOnTop(true); 那么我的抽屉很好用 main_activity.xml <android.support.v4.widget.DrawerLayout xm

我使用的是一个导航抽屉和一个表格。我的标签上有一段视频,起初看不见,但我能听到声音。一旦我设定

video_view.setZOrderOnTop(true);
我也可以看到视频,但这会导致导航抽屉出现问题

当我滑动它时,视频不会像所有其他元素一样隐藏在导航抽屉后面

如果我不使用

video_view.setZOrderOnTop(true);
那么我的抽屉很好用

main_activity.xml

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<!-- Framelayout to display Fragments -->
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/menuwhite2"
                    android:id="@+id/custom_home"
                    android:gravity="center"
                    android:layout_gravity="right"
                    android:layout_marginRight="10dp"/>

                <android.support.design.widget.TabLayout
                    android:id="@+id/tabs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:tabMode="fixed"
                    app:tabGravity="fill"
                    />

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
</android.support.design.widget.CoordinatorLayout>


<!-- Listview to display slider menu -->
<ListView
    android:id="@+id/list_slidermenu"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="end"
    android:choiceMode="singleChoice"
    android:divider="@color/list_divider"
    android:dividerHeight="1dp"
    android:listSelector="@drawable/list_selector"
    android:background="@color/list_background"/>

因此,有谁能为我提供一个替代方案。

当您设置zorderontop(true)它将位于其他布局的顶部。实际上,它控制曲面视图的曲面是否放置在其窗口的顶部

我的标签上有一段视频,起初不可见,但我可以 听到声音

根据您的评论,您将其他布局放置在
VideoView
上,这样您就看不到VideoView,但可以听到声音

在手机中转动
布局绑定

Setting-> developer option -> show Layout bound
您可以看到您的
布局中发生了什么
。我猜你看不到
VideoView
,因为你的
布局中有那些
match\u parents
(匹配父母的高度)
仔细检查他们(例如:每个人都放
50dp
),你的问题就会解决


也要使根布局
匹配父级
,而不是
包装内容
。这并不能解决问题,但它要好得多。

在几句评论之后,OP想看看一些代码

好的,让我们试试这样的方法:

private DrawerLayout drawer;
private ActionBarDrawerToggle toggle;

protected void onResume() {
    drawer.addDrawerListener(toggle);
    toggle.syncState();
}

protected void onPause() {
    drawer.removeDrawerListener(toggle);
    toggle.syncState();
}

protected void onCreate(Bundle saveInstanceState) {

    toggle = new ActionBarDrawerToggle(this, drawer, 
        toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
            public void onDrawerClosed(View view) {
                Log.d(TAG, "--> ActionBarDrawerToggle::onDrawerClosed
                    (view=" + view + ")");
                syncActionBarArrowState();
                //call videoView.setZOrderOnTop(true) so it's over everything
            }

            public void onDrawerOpened(View drawerView) {

                Log.d(TAG, "--> ActionBarDrawerToggle::onDrawerOpened
                    (drawerView=" + drawerView + ")");
                toggle.setDrawerIndicatorEnabled(true);
                //call videoView.setZOrderOnTop(false) so it's NOT over the drawer
            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                 super.onDrawerSlide(drawerView, 0);
                 //call videoView.setZOrderOnTop(false) 
                 //so it's not over the drawer being pulled out
            }
        };
}
您是否尝试改用VideoView?
ViedoView是众所周知的易出错视图


我写了一个简化了使用
TextureView
作为视频播放器的方法。

@Atula我建议你一个简单的解决方案……这是完美的工作

我附上的截图工作正常

试试这个

使用了这个

而不是


setZOrderOnTop(false)
当拉出抽屉时。我想这样做,但我的问题是抽屉处于活动状态,而videoview处于表格布局中。。你知道吗。如果你的视频在开场前被停止,会发生什么?如果我设置了Zorderontop(false),那么视频会正常运行,如果设置为true,那么无论它是否播放,它都会保持在最上面。将相关部分放在代码中。抽屉布局和视频视图您的回答对我没有帮助,但给了我解决问题的想法谢谢
Setting-> developer option -> show Layout bound
private DrawerLayout drawer;
private ActionBarDrawerToggle toggle;

protected void onResume() {
    drawer.addDrawerListener(toggle);
    toggle.syncState();
}

protected void onPause() {
    drawer.removeDrawerListener(toggle);
    toggle.syncState();
}

protected void onCreate(Bundle saveInstanceState) {

    toggle = new ActionBarDrawerToggle(this, drawer, 
        toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
            public void onDrawerClosed(View view) {
                Log.d(TAG, "--> ActionBarDrawerToggle::onDrawerClosed
                    (view=" + view + ")");
                syncActionBarArrowState();
                //call videoView.setZOrderOnTop(true) so it's over everything
            }

            public void onDrawerOpened(View drawerView) {

                Log.d(TAG, "--> ActionBarDrawerToggle::onDrawerOpened
                    (drawerView=" + drawerView + ")");
                toggle.setDrawerIndicatorEnabled(true);
                //call videoView.setZOrderOnTop(false) so it's NOT over the drawer
            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                 super.onDrawerSlide(drawerView, 0);
                 //call videoView.setZOrderOnTop(false) 
                 //so it's not over the drawer being pulled out
            }
        };
}
  video_player_view.setZOrderMediaOverlay(true);
  video_view.setZOrderOnTop(true);