0

J'ai créé une application avec l'activité Scrolling de l'androïde studio gabarits pour tester mon codage de mon principal App affecte que le comportement ou pas, donc je viens d'ajouter au code:snack-bar et CollapsingToolbarLayout avec TranslucentNavigation

<item name="android:windowTranslucentNavigation" tools:targetApi="kitkat">true</item> 

qui montre le Snackbar derrière la barre de navigation comme cette capture d'écran (PS: j'utilise Xstane pour redessiner ma barre de navigation sur mon mobile mais je pense que cela n'affecte pas le code parce que j'ai essayé TranslucentNavigation avec Snackbar sans CollapsingToolbarLayout et ça marche bien)

enter image description here

l'App soutient

  • windowTranslucentNavigation
  • Snack-bar CollapsingToolbarLayout
  • FloatingActionButton

Et Ceci est le code du principal xml

<?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="true" 
tools:context=".testscanbarwithcollapsing.ScrollingActivity" 
> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/app_bar_height" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay" 
    > 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed" 
     > 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:layout_collapseMode="pin" 
      app:popupTheme="@style/AppTheme.PopupOverlay" 
      /> 

    </android.support.design.widget.CollapsingToolbarLayout> 
</android.support.design.widget.AppBarLayout> 

<include layout="@layout/content_scrolling"/> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="@dimen/fab_margin" 
    app:layout_anchor="@id/app_bar" 
    app:layout_anchorGravity="bottom|end" 
    app:srcCompat="@android:drawable/ic_dialog_email" 
    /> 

À JOUR: voici le code du onClick du FloatingButton qui montrent le snack-bar (ce code est en onCreate de l'activité principale)

fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      fabProgressCircle.show(); 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
+0

S'il vous plaît montrer le code comment vous affichez snackbar. –

+0

@VipulAsri Mise à jour –

Répondre

6
private static void show(final Activity activity, Snackbar snackbar) { 
    if (ScreenUtils.isTranslucentNavigationBar(activity)){ 
     final FrameLayout snackBarView = (FrameLayout) snackbar.getView(); 
     final FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) snackBarView.getChildAt(0).getLayoutParams(); 
     params.setMargins(params.leftMargin, 
       params.topMargin, 
       params.rightMargin, 
       params.bottomMargin + ScreenUtils.getNavigationBarHeight(activity)); 

     snackBarView.getChildAt(0).setLayoutParams(params); 
    } 
    snackbar.show(); 
} 

public static boolean isTranslucentNavigationBar(Activity activity) { 
    Window w = activity.getWindow(); 
    WindowManager.LayoutParams lp = w.getAttributes(); 
    int flags = lp.flags; 
    return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT 
      && (flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) 
      == WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; 

} 

Cet idéal fonctionne pour moi!

+0

merci beaucoup d'avoir posté votre réponse à une vieille question sans réponse: D –

+0

Je l'ai essayé maintenant il ne peut pas résoudre le symbole 'ScreenUtils', allez-vous référencer la ressource de cette bibliothèque, parce que je n'ai pas pu trouver –

+1

C'est ma classe util. Voir le nom des méthodes à l'aide de la classe ScreenUtils et utiliser Google :) –