2016-03-13 37 views
5

Ho bisogno di aiuto per capire cosa c'è di sbagliato nel mio Snackbars (Design Support), che non viene mostrato.La vista a schermo intero nasconde la barra snack

Ho una visualizzazione video (FrameLayout contenente un SurfaceView creato dinamicamente).

Il file di layout è:

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

creo e mostrare lo snack bar con questo frammento:

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

Quando provo ad aprire lo snack non viene mostrato. Tuttavia, quando rimuovo VideoView dal mio layout, viene mostrato senza problemi.

Quindi, suppongo, che VideoView lo nasconda o che la barra degli snack sia mostrata fuori limite. Per verificare che, ho sostituito il VideoView con una visualizzazione di base della stessa dimensione. Ma lì, posso vedere gli snack bar.

Qualcun altro ha avuto un problema simile con SurfaceViews in connessione con Snackbars?

+0

allegarlo al VideoView invece di CoordinatorLayout – eclipse1203

risposta

3

prova ad aggiungere, videoView.setZOrderOnTop (false); nel file java.

+2

setZOrderOnTop (true); ha fatto il trucco Grazie. –

1

Fissare lo snack bar per il vostro VideoView invece di CoordinatorLayout

+0

Non ha aiutato spiacenti –

0

Ho un problema simile, mentre utilizzo WebView in Fullscreen e AppCompat, lo Snackbar è hiden. La mia soluzione per il problema:

• Avviare lo snack bar.

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

• Importante per mostrare lo spuntino in primo piano.

view.requestFocusFromTouch(); 

• Impostare la posizione in alto e mostrare lo spuntino. ! (Importante:.... L'impostazione è inferiore sarà nasconderlo sovrapposizione

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