アプリのステータスバーの色を変更して、(デフォルトの黒と白のアイコンではなく)白と黒のアイコンを表示したいと思います。これを行う方法はありますか?
アプリのステータスバーの色を変更して、(デフォルトの黒と白のアイコンではなく)白と黒のアイコンを表示したいと思います。これを行う方法はありますか?
回答:
Android M(apiレベル23)を使用すると、android:windowLightStatusBar
属性を持つテーマからこれを実現できます。
編集:
Pdroidが述べたように、これはプログラムで達成することもできます。
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
灰色のアイコンで白いステータスバーを作成することは可能です。たとえば、SDK> = 23の場合は次のようになります(ドキュメントを参照)。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowLightStatusBar">true</item>
</style>
styles.xmlで、colorPrimary
を白またはプログラムで設定します。
getWindow().setStatusBarColor(Color.WHITE);
SDK >= 23
が、いくつかの理由で@being_sohelkhanは、私のオリジナルの答えを編集した... stackoverflow.com/posts/46897243/revisionsを
Kotlinでの私のアクティビティに追加されました:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.WHITE
}
これをあなたのスタイルに追加するだけです
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
android:windowDrawsSystemBarBackgroundsをtrueに設定します*。これは、その説明が以下に示されているフラグです。
このウィンドウがシステムバーの背景の描画を担当しているかどうかを示すフラグ。trueでウィンドウがフローティングでない場合、システムバーは透明な背景で描画され、このウィンドウの対応する領域は{@link android.R.attr#statusBarColor}および{@linkandroid.Rで指定された色で塗りつぶされます。 .attr#navigationBarColor}。{@link android.view.WindowManager.LayoutParams#FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}に対応します。
Kotlinでこのように使用できます
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
必ずonCreate()
前に電話してくださいsetContentView()
私も同じ問題を抱えていました。
私はRelativeLayoutのような通常のレイアウトを使用するとそれが機能しないことに気づきました。しかし、CordinatorLayoutのようなサポートライブラリからのものに切り替えると、ようやく機能し始めました。これを試して。
<?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=".Activities.Activity">
<android.support.v7.widget.Toolbar
android:id="@+id/tb_activity"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CoordinatorLayout>
<*********他の属性の下************>
スタイル
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
そしてマニフェストで
<activity
android:name=".Activities.MyActivity"
android:label="Activity"
android:theme="@style/AppTheme.NoActionBar">
</activity>