9

我想知道是否可以滾動整個狀態欄(圖標和背景),而不僅僅是背景。幾乎就好像它是工具欄的一部分一樣。在Android上使用協調器佈局可以使狀態欄與工具欄一起滾動嗎?

我遇到了與下面的問題相同的情況,區別在於我想知道是否可以將整個狀態欄作爲背景滾動以使背景不透明 - 這是我認爲的期望結果下面的查詢

Android status bar scrolling up with coordinator layout, leaving status icons overlapping toolbar title

這裏是一個圖形

enter image description here

這裏是我的代碼

<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="me.hugopretorius.wishlizt.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay" 
     app:contentScrim="#000"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/AppTheme.PopupOverlay" 
      /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tabs"/> 

    <io.github.yavski.fabspeeddial.FabSpeedDial 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     app:fabGravity="bottom_end" 
     app:fabMenu="@menu/menu_fab" 
     app:miniFabBackgroundTint="@android:color/white" 
     app:miniFabDrawableTint="?attr/colorPrimaryDark" 
     app:miniFabTitleTextColor="?attr/colorPrimaryDark" /> 

</android.support.design.widget.CoordinatorLayout> 
+0

,換句話說,你試圖只顯示** TabLayout **並隱藏'StatusBar',對嗎? – Mohsen

+0

當然,**我不認爲如果你會從**'可信和/或官方來源'找到答案,因爲它不被android推薦隱藏'StatusBar'當'Toolbar'被隱藏並且那裏只是一個「TabLayout」AFAIK。 – Mohsen

+0

@Mohsen當工具欄可見時(當用戶向上滾動時),我想顯示狀態欄,並且在用戶向下滾動時將狀態欄和工具欄都滑出視圖。目前我唯一的選擇是1.隱藏或2.顯示StatusBar。它沒有像工具欄上的滾動動作。 –

回答

0

嘗試添加以下內容到你的onResume活動

View decorView = getWindow().getDecorView(); 
int uiFlagFullscreen = View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiFlagFullscreen); 
2

你應該能夠聽滾動變化,隱藏狀態欄,一旦工具欄崩潰。這不會給你實際的增量滾動,但只會根據需要留下標籤。

首先,設定的onCreate標誌,以便當條消失的佈局不會跳:

//root should be your coordinator/top level layout 
mRoot.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
          | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

一旦工具欄崩潰,更改狀態欄隱藏:所以

appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { 
    @Override 
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
     if (Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange()) { 

      // Collapsed 
      mRoot.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
             | View.SYSTEM_UI_FLAG_FULLSCREEN); //this one changed 

     } else if (verticalOffset == 0) { 

      // Fully Expanded - show the status bar 
      if (Build.VERSION.SDK_INT >= 16) { 
       mRoot.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE 
              | View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
              | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
      } else { 
       getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
      } 

     } else { 
      // Somewhere in between 
      // We could optionally dim icons in this step by adding the flag: 
      // View.SYSTEM_UI_FLAG_LOW_PROFILE 
     } 
    } 
}); 
+0

理想情況下,狀態欄/系統欄應僅隱藏在需要全屏顯示的身臨其境的內容中。但是對於標籤欄,我們應該仔細考慮修改系統欄,因爲它們爲用戶提供了一種標準的導航設備並查看其狀態的方法,如https://developer.android.com/training/system-ui/index.html 。但是,如果我們真的需要隱藏狀態欄與標籤欄顯示這似乎是最接近的解決方案。它不會有所需的動畫,並且通常不被android設計指南推薦,因此在選擇它之前應該考慮三次。 – random

+1

謝謝尼克,這是非常有用的,我會用這個。儘管它沒有滾動動畫,但有一點造型,我可以讓它看起來不錯。 –

相關問題