全屏表面视图隐藏小吃店
Fullscreen surface view hides snackbar
我需要一些帮助来弄清楚我的 Snackbars(设计支持)有什么问题,它没有出现。
我有一个 VideoView(包含动态创建的 SurfaceView 的 FrameLayout)。
布局文件是:
<?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 的类似问题?
将小吃店附加到您的 VideoView 而不是 CoordinatorLayout
尝试在您的 java 文件中添加 videoView.setZOrderOnTop(false);。
我遇到了类似的问题,在全屏和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();
• 设置位置顶部并显示零食。 (!重要提示:将其设置为 Bottom 会隐藏它。
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
params.setGravity(Gravity.TOP);
view.setLayoutParams(params);
snack.show();
我需要一些帮助来弄清楚我的 Snackbars(设计支持)有什么问题,它没有出现。
我有一个 VideoView(包含动态创建的 SurfaceView 的 FrameLayout)。
布局文件是:
<?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 的类似问题?
将小吃店附加到您的 VideoView 而不是 CoordinatorLayout
尝试在您的 java 文件中添加 videoView.setZOrderOnTop(false);。
我遇到了类似的问题,在全屏和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();
• 设置位置顶部并显示零食。 (!重要提示:将其设置为 Bottom 会隐藏它。
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
params.setGravity(Gravity.TOP);
view.setLayoutParams(params);
snack.show();