programing

Lollipop에서 앱과 일치하도록 상태 표시 줄 색상을 변경하는 방법은 무엇입니까?

nasanasas 2020. 8. 24. 18:48
반응형

Lollipop에서 앱과 일치하도록 상태 표시 줄 색상을 변경하는 방법은 무엇입니까? [기계적 인조 인간]


새로운 롤리팝 업데이트에서 기본 Google 앱을 사용하면 실행중인 앱의 작업 표시 줄과 일치하도록 상태 표시 줄의 색상이 변경되는 것을 확인했습니다. 트위터 앱에서도 볼 수 있기 때문에 할 수있는 사람은 Google만이 아니라고 생각합니다.

가능하다면 누구든지 이것을하는 방법을 알고 있습니까?


상태 표시 줄 색상을 변경하려면 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));


명심 재료 설계 지침에 따라 상태 표시 줄 색상과 작업 표시 줄의 색이 달라야합니다 :

  • ActionBar기본 500 색상을 사용해야합니다.
  • StatusBar기본 700 색상을 사용해야합니다.

아래 스크린 샷을보십시오.

여기에 이미지 설명 입력


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의이 사진은 색상 팔레트에 대해 자세히 설명합니다. 링크에서 더 많은 것을 읽을 수 있습니다 .

여기에 이미지 설명 입력


상태 표시 줄 색상을 설정하는 또 다른 방법은 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>

두 가지 스타일을 사용하는 경우 v21 스타일로이 줄을 추가하십시오.

  <item name="android:statusBarColor">#43434f</item>

또한 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));

참고 URL : https://stackoverflow.com/questions/27093287/how-to-change-status-bar-color-to-match-app-in-lollipop-android

반응형