2016-03-13 6 views
5

Ich brauche Hilfe, herauszufinden, was ist los mit meinem Snackbars (Design Support), die nicht angezeigt werden.Fullscreen-Oberflächenansicht verbirgt Snackbar

Ich habe ein VideoView (FrameLayout enthält eine dynamisch erstellte SurfaceView).

Die Layout-Datei ist:

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

ich schaffen und zeigen die snackbar mit diesem Code-Schnipsel:

... 
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."); 
} 

Wenn ich versuche, die snackbar zu öffnen es nicht dargestellt ist. Wenn ich das VideoView jedoch aus meinem Layout entferne, wird es ohne Probleme angezeigt.

Also, ich denke, dass der VideoView es versteckt oder die Snackbar ist außerhalb der Grenzen gezeigt. Um das zu überprüfen, ersetzte ich das VideoView durch eine grundlegende Ansicht der gleichen Größe. Aber da kann ich die Snackbars sehen.

Hat jemand anderes ein ähnliches Problem mit SurfaceViews in Verbindung mit Snackbars?

+0

Bringen Sie es zu Ihrem Videoview statt CoordinatorLayout – eclipse1203

Antwort

3

Versuchen Sie, videoView.setZOrderOnTop (false); in Ihrer Java-Datei.

+2

setZOrderOnTop (true); der Trick Danke. –

1

Bringen Sie die Snack-Bar auf Ihren Videoview statt CoordinatorLayout

+0

nicht helfen Haben leider –

0

Ich habe ein ähnliches Problem, während WebView in Fullscreen und AppCompat verwenden, ist die Snackbar hiden. Meine Lösung für das Problem:

• Init die 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(); 

• Wichtig für die Darstellung des Snackvordergrunds.

view.requestFocusFromTouch(); 

• Position oben setzen und den Snack anzeigen. ! (Wichtig:.... Es einstellen Unten wird verstecken Overlay

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