Android 롤리팝 변경 탐색 막대 색상


137

내 응용 프로그램에서 아래쪽 탐색 모음 색상을 변경해야합니다. 많은 게시물을 보았지만 솔루션으로 찾을 수 없습니다. appCompat 라이브러리를 사용하고 있습니다.

여기에 이미지 설명을 입력하십시오

v21 / styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light">
       <item name="android:windowBackground">@drawable/bgpreview</item>
       <item name="android:colorPrimary">@color/MyColor</item>
       <item name="android:colorPrimaryDark">@color/MyColor</item>
       <item name="android:windowContentOverlay">@null</item>
       <item name="android:textColorPrimary">@color/MyColor</item>
       <item name="colorAccent">@color/MyColor</item>
       <!-- darker variant for the status bar and contextual app bars -->
       <item name="android:windowContentTransitions">true</item>
       <item name="android:windowAllowEnterTransitionOverlap">true</item>
       <item name="android:windowAllowReturnTransitionOverlap">true</item>
       <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
       <item name="android:windowSharedElementExitTransition">@android:transition/move</item>

       <item name="windowActionBar">false</item>
       <item name="android:textAllCaps">false</item>

</style>

style.xml 파일을 게시 할 수 있습니까? 전부는 아닙니다. 방금 관련된 스 니펫
Blackbelt

기본 색상을 어떻게 다시 설정할 수 있습니까?
GMX September

답변:


262

styles.xml에서 다음을 사용하여 수행 할 수 있습니다.

<item name="android:navigationBarColor">@color/theme_color</item>

또는

window.setNavigationBarColor(@ColorInt int color)

http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)

이 방법은 Android Lollipop에서 도입되었으며 API 버전 <21에서는 작동하지 않습니다.

두 번째 방법 (KitKat에서 작동)은 매니페스트에서 windowTranslucentNavigation을 true로 설정하고 탐색 막대 아래에 컬러보기를 배치하는 것입니다.


감사합니다. 내 스타일 코드 <item name = "android : navigationBarColor"> @ color / MyColor </ item>에 추가하여 작동합니다.
user3065901

31
아이콘의 색상으로 변경하는 방법이 있습니까?
Jamsheed Kamarudeen

10
<item name="android:navigationBarColor">@color/theme_color</item>values-21폴더에 추가
Pratik Butani

또한 (대상 안드로이드 버전) 이상으로 설정되어 있는지 확인 API (21)
MujtabaFR

2
이것을 스타일 파일에 넣지 마십시오. <item name="android:windowDrawsSystemBarBackgrounds">false</item>그렇지 않으면 시스템 막대 색상이 작동하지 않습니다.
Alexey Ozerov

70

프로그래밍 방식으로 수행하는 방법은 다음과 같습니다.

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {                
   getWindow().setNavigationBarColor(getResources().getColor(R.color.your_awesome_color));
}

Compat 라이브러리 사용 :

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

values-v21 / style.xml 폴더의 xml로 수행하는 방법은 다음과 같습니다.

<item name="android:navigationBarColor">@color/your_color</item>

1
이것은 이상한 옵션입니다!
탐색

37

탐색 막대 색상을 변경하는 방법은 다음과 같습니다.

XML로

1- 값 -v21 / style.xml

<item name="android:navigationBarColor">@color/navigationbar_color</item>

또는 values ​​/ 폴더 만 사용하여 수행하려면

2- 값 /style.xml

<resources xmlns:tools="http://schemas.android.com/tools">

<item name="android:navigationBarColor" tools:targetApi="21">@color/navigationbar_color</item>

프로그래밍으로 탐색 표시 줄 색상 변경할 수도 있습니다 .

 if (Build.VERSION.SDK_INT >= 21)
    getWindow().setNavigationBarColor(getResources().getColor(R.color.navigationbar_color));

Compat Library를 사용하여

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setNavigationBarColor(ContextCompat.getColor(this, R.color.primary));
}

자세한 내용은 http://developer.android.com/reference/android/view/Window.html#setNavigationBarColor(int)에 대한 링크를 찾으십시오.


사용할 수 없었 tools:targetApi습니까? 이 기능이 오래 되었습니까?
winklerrr

1
@winklerrr 구식이 아니므로 업데이트 된 답변을 참조하십시오.
D_Alpha

프로그래밍 방식으로 색상을 변경하기로 결정한 경우 각 Activity/ 에서이 작업을 수행해야 Fragment합니까? 아니면 내가해야 할 곳이 있습니까? 어쩌면 수업 시간에 확장 될 수 Application있습니까?
winklerrr

1
각 활동에서이 작업을 수행해야하거나 다른 활동에 대해 다른 스타일을 만들 수 있습니다.
D_Alpha

재정의 할 필요가 없습니다 styles.xml사용하는 동안tools:targetApi
Farshad Tahmasbi

8

values-v21 / style.xml 폴더에 다음 줄을 추가 할 수 있습니다 .

<item name="android:navigationBarColor">@color/theme_color</item>

1

다음을 클릭하여 테마 편집기를 사용하여 테마를 수정할 수도 있습니다.

도구-> Android-> 테마 편집기

그런 다음 .xml 또는 .class 파일에 추가 내용을 넣을 필요조차 없습니다.


좋은 팁! 나를 위해 그것은 도구-> 테마 편집기 아래에있었습니다.
Sam

이제 테마 편집기는 3.3부터 시작됩니다.
Jenix

1
  1. 검은 색 만들기 : <color name="blackColorPrimary">#000001</color> (not #000000)
  2. 스타일 쓰기 : <item name="android:navigationBarColor" tools:targetApi="lollipop">@color/blackColorPrimary</item>

문제는 안드로이드 상위 버전이 # 000000에 대해 투명하다는 것입니다


0

styles.xml 파일 \ app \ src \ main \ res \ values ​​\ styles.xml 에서 직접 변경할 수 있습니다.

이것은 이전 버전에서 작동하며 KitKat에서 변경하여 여기로 왔습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.