先來張效果圖:
其實就是內容裏頂層的圖片,延伸到狀態欄那裏了,並且狀態欄的那個半透明背景不顯示。
前前後後調了快1天了,也查找了很多資料,都無法實現我想要的效果。
後來發現只要2步就可以實現了:
第1步:在需要AndroidManifest把需要顯示的那個Activity的主題設爲這樣,Android.xml的設置:
<activity android:name=".MainActivity" android:theme="@style/AppTheme.NoActionBar2"/>
這裏的NoActionBar2是我自定義的:
<style name="AppTheme.NoActionBar2">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
第2步:在Activity的Oncreate裏添加這兩句代碼即可:
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
這樣,Activity裏的界面就變成沉浸式的效果了,即內容會延伸到狀態欄那裏,並且狀態欄的那半透明背景也會消失,這樣就和微信朋友圈裏的一樣效果了。
需要說明一下,狀態欄裏的文字是白色的(我測試的手機目前狀態欄那裏的文字都是白色),如果此時你內容也偏向白色,這樣狀態欄的文字信息很難看清,所以第2步裏的這句
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
是將顏色變深色。。。
如果添加了上面兩個步聚都無法實現效果,可以試下把xml裏的這句話去掉試試:
android:fitsSystemWindows="true"
另外,這樣設計只是Activity主內容實現了沉浸式的設計,但是左滑出來的菜單,狀態欄還是會有半透明的背景,要實現隱藏那半透明背景,估計差不多吧,我沒有繼續弄下去,有興趣的童鞋可以試試~
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
補充:其他一般的Activity要將Toobar裏的顏色沉浸到標題欄裏,也只要2步即可:
第1步,設置toobar的xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorRed"
android:fitsSystemWindows="true"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:navigationIcon="@drawable/icon_poi_back" />
</LinearLayout>
第2步,在Activity的onCreate設置這兩行代碼:
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
實現效果如下:
這樣實現了沉浸式的效果,但是測試時發現這樣的情況:就是黑屏再亮屏後,狀態欄又恢復默認的狀態了,這樣達不到效果。
所以也是在AndroidManifest.xml對應的Activity後面添加主題NoActionBar2(這個是我自定義的,和文章一開始介紹的那個第1步的一樣)即可