全屏表面视图隐藏了小吃栏

时间:2016-03-13 17:01:13

标签: android android-layout surfaceview android-snackbar

我需要一些帮助来弄清楚我的Snackbars(设计支持)出现了什么问题,但是没有出现。

我有一个VideoView(FrameLayout包含一个动态创建的SurfaceView)。

布局文件是:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="false"
    android:id="@+id/coordinator"
    android:background="@android:color/white"
    tools:context="com.denisloh.typhoonCamera.MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <VideoView
            android:id="@+id/videoView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="top|start"
            android:background="@drawable/toolbar_gradient"
            android:theme="@style/AppTheme.AppBarOverlay"
            app:popupTheme="@style/AppTheme.PopupOverlay">

            <android.support.v7.widget.ActionMenuView
                android:id="@+id/action_bar"
                android:layout_height="wrap_content"
                android:layout_width="wrap_content" />

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

    </RelativeLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_camera_white_24dp" />

</android.support.design.widget.CoordinatorLayout>

我使用此代码段创建并显示小吃栏:

...
mCoordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator);
...

private void showWifiSettingsSnackBar(final String message) {
    Snackbar.make(
            mCoordinatorLayout,
            getString(R.string.wifi_error_open_settings, message),
            Snackbar.LENGTH_INDEFINITE)
            .setAction(R.string.wifi_settings, new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
                }
            })
            .show();
    Log.d(TAG, "Showing snackbar.");
}

当我尝试打开小吃店时,它没有显示。但是,当我从布局中删除VideoView时,它显示没有任何问题。

所以,我想,VideoView正在隐藏它或者快餐栏显示超出范围。为了检查这一点,我用相同大小的基本视图替换了VideoView。但在那里,我可以看到小吃店。

其他人是否在与Snackbars有关的SurfaceViews方面遇到过类似的问题?

3 个答案:

答案 0 :(得分:4)

尝试在java文件中添加 videoView.setZOrderOnTop(false);

答案 1 :(得分:1)

将小吃店附加到您的VideoView而不是CoordinatorLayout

答案 2 :(得分:0)

我遇到了类似的问题,在Fullscreen和AppCompat中使用WebView时,Snackbar被隐藏了。我对此问题的解决方案:

•开始吃零食吧。

View rootView = super.findViewById(R.id.mainContainer);
Snackbar snack = Snackbar.make(rootView, message, Snackbar.LENGTH_INDEFINITE);
snack.setAction("OK", callback);
View view = snack.getView();

•显示小吃前景很重要。

view.requestFocusFromTouch();

•设置位置顶部并显示零食。 (!重要:将它设置为底部将隐藏它的叠加。

FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
params.setGravity(Gravity.TOP);
view.setLayoutParams(params);
snack.show();