0

Я создал приложение с Scrolling деятельности из Android Studio Templets, чтобы проверить мое кодирование моего основного приложения влияет на это поведение или нет, так что я просто добавить код:Snackbar и CollapsingToolbarLayout с TranslucentNavigation

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

, который показывает Snackbar за навигационной панелью как этот снимок экрана (PS: Я использую Xstane для перепроектирования моей навигационной панели на мобильном телефоне, но я думаю, что это не влияет на код, потому что я попробовал TranslucentNavigation с помощью Snackbar Without CollapsingToolbarLayout и это хорошо работает)

enter image description here

приложение поддерживает

  • windowTranslucentNavigation
  • Snackbar
  • CollapsingToolbarLayout
  • FloatingActionButton

И Это код основного 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" 
    /> 

ОБНОВЛЕНО: вот код OnClick из FloatingButton, которые показывают закусочной (этот код в OnCreate основной деятельности)

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

Пожалуйста, покажите код, как вы показываете закусочную. –

+0

@VipulAsri Обновлено –

ответ

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; 

} 

Этот идеал работает для меня!

+0

Большое спасибо за отправку ответа на старый вопрос без ответа: D –

+0

Я пробовал его сейчас, он не может решить символ «ScreenUtils», вы будете ссылаться на ресурс этой библиотеки, потому что я не смог найти это –

+1

Его класс моего использования. См. Название методов, использующих класс ScreenUtils, и используйте Google :) –

Смежные вопросы