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));
'programing' 카테고리의 다른 글
`__android_log_print '에 대한 정의되지 않은 참조 (0) | 2020.08.24 |
---|---|
모든 스레드가 끝날 때까지 파이썬 다중 스레딩 대기 (0) | 2020.08.24 |
FragmentPagerAdapter를 사용하는 ViewPager의 조각은 두 번째로 볼 때 비어 있습니다. (0) | 2020.08.24 |
Android Studio 3.0- 'com.android.build.gradle.internal.variant.BaseVariantData.getOutputs () Ljava / util / List'메소드를 찾을 수 없습니다. (0) | 2020.08.23 |
디버깅을 위해서만 print 문 사용 (0) | 2020.08.23 |