답변:
상태 표시 줄 색상을 변경하려면 setStatusBarColor (int color)를 사용하십시오 . javadoc에 따르면 창에 몇 가지 플래그를 설정해야합니다.
작업 코드 스 니펫 :
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(ContextCompat.getColor(activity, R.color.example_color));
명심 재료 설계 지침에 따라 상태 표시 줄 색상과 작업 표시 줄의 색이 달라야합니다 :
아래 스크린 샷을보십시오.
getWindow().setStatusBarColor(activity.getResources().getColor(R.color.example_color));
했고 완벽하게 작동 했다고 말해야합니다 . 플래그가 엄격하게 필요한 컨텍스트에 대해 확실하지 않습니다.
styles.xml에 이것을 추가하십시오. colorPrimary는 작업 표시 줄용이고 colorPrimaryDark는 상태 표시 줄용입니다.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
</style>
개발자 Android의이 사진은 색상 팔레트에 대해 자세히 설명합니다. 이 링크에서 더 많은 것을 읽을 수 있습니다 .
<color name="colorPrimary">#somecolor</color>
하고 <color name="colorPrimaryDark">#somecolor</color>
. 원하는 효과를 얻기 위해 변경할 수 있습니다.
상태 표시 줄 색상을 설정하는 또 다른 방법은 style.xml을 사용하는 것 입니다.
이를 위해 res / values-v21 폴더 아래에 다음 내용 으로 style.xml 파일을 만듭니다 .
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="android:Theme.Material">
<!-- darker variant for the status bar and contextual app bars -->
<item name="android:colorPrimaryDark">@color/blue_dark</item>
</style>
</resources>
편집 : 주석에서 지적했듯이 AppCompat을 사용할 때 코드가 다릅니다. res / values / style.xml 파일에서 대신 다음을 사용하십시오.
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
<!-- Set AppCompat’s color theming attrs -->
<item name="colorPrimary">@color/my_awesome_red</item>
<item name="colorPrimaryDark">@color/my_awesome_darker_red</item>
<!-- Other attributes -->
</style>
상태 표시 줄 색상을 설정하려면 다음 내용으로 res / values-v21 폴더 아래에 style.xml 파일을 만듭니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppBaseTheme" parent="AppTheme">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/blue</item>
</style>
</resources>
또한 status-bar
다른 활동 ( 조각 )에 대해 다른 색상을 원하는 경우 다음 단계로 수행 할 수 있습니다 (API 21 이상에서 작업).
먼저 values21/style.xml
다음 코드를 만들고 입력하십시오.
<style name="AIO" parent="AIOBase">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowContentTransitions">true</item>
</style>
그런 values/style.xml
다음 다음과 같이 White | Dark 테마를 정의하십시오 .
<style name="AIOBase" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_primary_dark</item>
<item name="colorAccent">@color/color_accent</item>
<item name="android:textColorPrimary">@android:color/black</item>
<item name="android:statusBarColor" tools:targetApi="lollipop">@color/color_primary_dark
</item>
<item name="android:textColor">@color/gray_darkest</item>
<item name="android:windowBackground">@color/default_bg</item>
<item name="android:colorBackground">@color/default_bg</item>
</style>
<style name="AIO" parent="AIOBase" />
<style name="AIO.Dark" parent="AIOBase">
<item name="android:statusBarColor" tools:targetApi="lollipop">#171717
</item>
</style>
<style name="AIO.White" parent="AIOBase">
<item name="android:statusBarColor" tools:targetApi="lollipop">#bdbdbd
</item>
</style>
또한 manifest.xml
.
Android 이전 Lollipop 장치에서는 SystemBarTintManager 에서 수행 할 수 있습니다. Android 스튜디오를 사용하는 경우 Gradle 파일에 Systembartint lib를 추가하기 만하면됩니다.
dependencies {
compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
...
}
그런 다음 활동에서
// create manager instance after the content view is set
SystemBarTintManager mTintManager = new SystemBarTintManager(this);
// enable status bar tint
mTintManager.setStatusBarTintEnabled(true);
mTintManager.setTintColor(getResources().getColor(R.color.blue));