본문 바로가기

Programming/Android

[Android] 스테이터스바 컬러 변경(Change Statusbar Color) 

기본으로 적용시킨 스테이터스바 컬러 이외에 

특정 플래그먼트 또는 액티비티에서 스테이터스바 컬러를 변경해야할 때가 있다.


롤리팝 이상 버전부터 코드 상에서 컬러를 변경할 수 있는데 


변경하기 위해선 styles.xml 에 아래 코드를 넣어 줘야 한다.( 앱 테마가 적용된 부분)


롤리팝 이상부터 동작하기 때문에 values-v23 에 적용시키면 된다.


<item name="android:windowDrawsSystemBarBackgrounds">true</item>


그리고 아래 메소드를 통해 스테이터스바의 컬러를 변경하면 된다.~



//컬러 코드로 변경(예: #373737)
public static final void updateStatusBarColor (Activity context, String color) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = context.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.parseColor(color));
        }
    }
//컬러 리소스로 변경(예 : R.color.deep_blue)
 public static final void updateStatusBarColor (Activity context, int colorId) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = context.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(ContextCompat.getColor(context, colorId));
        }
    }