Android没入式ステータスバーまとめ
18149 ワード
参考記事1参考記事2
没入式ステータスバーとは、タイトルバーの色とステータスバーの色を同じ色に設定ことであり、Androidの異なるバージョンでも没入式の設定方法は異なる.
4.4時浸漬式ステータスバーの設定方法コード設定またはトピック設定
テーマ設定、のように設定と、タイトルバーが移動する状態バーと重なる.タイトルバーを下に移動するには、
以上の2つのステップを経ることで、ステータスバーの背景とタイトルバーの色を一致させることができる.
5.0での浸透状態バーの設定方法コードで を設定する.テーマ設定で を追加する.
6.0での浸透状態バーの設定方法
6.0浸透式の設定方法と5.0の差は多くない.6..0を少し最適化し、ステータスバーのフォント色とアイコン色を変更することができる.コード方式で を設定する.テーマ設定で を追加する.
レイアウトをステータスバー領域に延長する方法 4.4時設定方法 コード設定 テーマ設定、 5.0時設定方法 6.0時設定方法
没入式ステータスバーとは、タイトルバーの色とステータスバーの色を同じ色に設定ことであり、Androidの異なるバージョンでも没入式の設定方法は異なる.
4.4時浸漬式ステータスバーの設定方法
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
テーマ設定、
values-v19
フォルダの下<style name="MDTheme" parent="Theme.Design.Light.NoActionBar">
- "android:windowTranslucentStatus"
>true
style>
decorView
のレイアウト容器にステータスバーの幅と同じView
を加える、このView
を設置する背景はタイトルバーの色と同じであり、これにより浸漬式のステータスバーを実現することができる.//
// 1. Activity decorView , decorView View View,
ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView();
// 2. View decorView
decorView.addView(myView)
// 3.
// rootView Activity View
ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);
// childView padding , View paddingTop , .
ViewCompat.setFitsSystemWindows(rootView,true);
// childView padding .
rootView.setClipToPadding(true);
以上の2つのステップを経ることで、ステータスバーの背景とタイトルバーの色を一致させることができる.
5.0での浸透状態バーの設定方法
//
getWindow().setStatusBarColor(getResources().getColor(android.R.color.read));
// , StatusBarColor , StatusBarColor
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
values-v21
フォルダの下にテーマ<style name="MDTheme" parent="Theme.Design.Light.NoActionBar">
- "android:windowTranslucentStatus"
>false
- "android:windowDrawsSystemBarBackgrounds">true
- "android:statusBarColor">@android:color/read
style>
6.0での浸透状態バーの設定方法
6.0浸透式の設定方法と5.0の差は多くない.6..0を少し最適化し、ステータスバーのフォント色とアイコン色を変更することができる.
//
getWindow().setStatusBarColor(getResources().getColor(android.R.color.read));
// , StatusBarColor , StatusBarColor
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
values-v23
フォルダの下にテーマ<style name="MDTheme" parent="Theme.Design.Light.NoActionBar">
- "android:windowTranslucentStatus"
>false
- "android:windowDrawsSystemBarBackgrounds">true
- "android:statusBarColor">@android:color/holo_red_light
- "android:windowLightStatusBar">true
style>
レイアウトをステータスバー領域に延長する方法
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
values-v19
フォルダ下 <style name="MDTheme" parent="Theme.Design.Light.NoActionBar">
- "android:windowTranslucentStatus"
>true
style>
// 1.
getWindow().setStatusBarColor(Color.TRANSPARENT)
// , StatusBarColor .
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// 2. ,
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
//
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// 1.
getWindow().setStatusBarColor(Color.TRANSPARENT)
// , StatusBarColor , StatusBarColor
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// 2. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: ,
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
//
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);