Android에서 상태 표시줄 색을 변경하는 방법은 무엇입니까?
우선 안드로이드 상태 표시줄의 배경색을 변경하는 방법과 같은 복제가 아닙니다.
탐색 모음과 동일한 상태 표시줄 색상을 변경하려면 어떻게 해야 합니까?
상태 표시줄 색상을 탐색 모음 색상과 동일하게 설정합니다.
Rolipop은 Android 5.0으로 상태 을 지정하는 했습니다.colorPrimaryDark
주제의 가치.
실제 주석: 재료 설계 라이브러리를 사용하면 다음과 같습니다.
colorPrimaryVariant
이것은 버전 21 이후의 라이브러리 support-v7-appcompat 덕분에 장치 사전 롤리팝에서 지원됩니다.Chris Banes의 지원 앱 compat v21에 대한 블로그 게시물
Android Developers 공식 웹 사이트에서 재료 테마에 대해 자세히 알아보기
업데이트:
롤리팝:
public abstract void setStatusBarColor (int color)
API 레벨 21에 추가됨
인 사용자 할 수 의 Android Rollipop과 하는 기능을 함께 했습니다.Material Design Guidelines
.
다음은 새로운 기능을 사용하여 상태 표시줄의 색을 변경하는 방법입니다.window.setStatusBarColor
에 도입된 방법.
두. 이.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
플래그를 지정하여 삭제합니다.FLAG_TRANSLUCENT_STATUS
깃발
작업 코드:
import android.view.Window;
...
Window window = activity.getWindow();
// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
// finally change the color
window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));
공식 개발자 참조: setStatusBarColor(int)
예: 모든 곳에서 재료 설계
Chris Banes 블로그 - 앱 compat v21: 롤리팝 이전 기기를 위한 재료 디자인!
그transitionName
뷰 배경은 다음과 같습니다.android:status:background
.
가 당신의 장는당것다니입신의소▁place.values-v21/styles.xml
롤리팝에서 이 기능을 활성화하려면:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_secondary</item>
<item name="colorAccent">@color/color_accent</item>
<item name="android:statusBarColor">@color/color_primary</item>
</style>
</resources>
Java 개발자의 경우:
@Niels가 말했듯이 values-v21/styles.xml에 배치해야 합니다.
<item name="android:statusBarColor">@color/black</item>
하지만 추가tools:targetApi="lollipop"
singlestyles.xml을 하려면 다음과 같이 .
<item name="android:statusBarColor" tools:targetApi="lollipop">@color/black</item>
코틀린 개발자용:
window.statusBarColor = ContextCompat.getColor(this, R.color.color_name)
이것은 라이브러리 없이 이것을 하는 매우 쉬운 방법입니다: OS 버전이 지원되지 않는 경우 - kitkat 아래 - 그래서 아무 일도 일어나지 않습니다.다음 단계를 수행합니다.
- 내 xml에서 나는 위에 이 보기를 추가했습니다.
<View android:id="@+id/statusBarBackground" android:layout_width="match_parent" android:layout_height="wrap_content" />
그리고 나서 나는 이 방법을 만들었습니다:
public void setStatusBarColor(View statusBar,int color){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//status bar height
int actionBarHeight = getActionBarHeight();
int statusBarHeight = getStatusBarHeight();
//action bar height
statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
statusBar.setBackgroundColor(color);
}
}
또한 액션 막대 및 상태 막대 높이를 얻으려면 두 가지 방법이 모두 필요합니다.
public int getActionBarHeight() {
int actionBarHeight = 0;
TypedValue tv = new TypedValue();
if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
return actionBarHeight;
}
public int getStatusBarHeight() {
int result = 0;
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = getResources().getDimensionPixelSize(resourceId);
}
return result;
}
그러면 상태 표시줄 색을 설정하기 위해 필요한 것은 이 줄뿐입니다.
setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
다음과 같은 간단한 코드를 사용할 수 있습니다.
코틀린의 원라이너:
window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
Java 및 수동 버전 확인을 통한 원본 답변:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light, this.getTheme()));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light));
}
위의 lolipop 색상을 변경하려면 이를 style.xml에 추가하십시오.
<item name="android:statusBarColor">@color/statusBarColor</item>
그러나 상태 표시줄에 밝은 색을 사용하려면 이 줄도 추가하십시오.
<item name="android:windowLightStatusBar">true</item>
Izhar의 솔루션은 괜찮았지만 개인적으로 다음과 같은 코드는 피하려고 합니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//Do what you need for this SDK
};
하지만 코드를 복제하는 것도 좋아하지 않습니다.귀하의 답변에 저는 모든 활동에 아래와 같은 코드 라인을 추가해야 합니다.
setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
그래서 저는 Izhar의 솔루션을 사용하여 XML을 사용하여 StatusBar status_bar.xml에 대한 레이아웃을 만들었습니다.
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/statusBarHeight"
android:background="@color/primaryColorDark"
android:elevation="@dimen/statusBarElevation">
높이 및 표고 특성에 유의하십시오. 이러한 특성은 값 -v19, 값 -v21에서 추가로 설정됩니다.
include_activity.xml을 사용하여 이 레이아웃을 활동 레이아웃에 추가합니다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Black" >
<include layout="@layout/status_bar"/>
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
//The rest of your layout
</RelativeLayout>
도구 모음의 경우 위쪽 여백 속성을 추가합니다.
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@color/primaryColor"
app:theme="@style/MyCustomToolBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="@dimen/toolbarElevation"
android:layout_marginTop="@dimen/appBarTopMargin"
android:textDirection="ltr"
android:layoutDirection="ltr">
</flash>support.v7.vmdk입니다.도구 모음 >
앱에서style-v19.xml 및 style-v21.xml 테마를 선택하고 Translucent 특성 창을 추가합니다.
styles-v19.xml, v21:
<resources>
<item name="android:windowTranslucentStatus">true</item>
</resources>
마지막으로 치수에서 dimensions-v19, dimensions-v21에서 툴바 상단 여백 값과 상태 표시줄의 높이를 추가합니다.높이: dimens.xml(KitKat 미만의 경우):
<resources>
<dimen name="toolbarElevation">4dp</dimen>
<dimen name="appBarTopMargin">0dp</dimen>
<dimen name="statusBarHeight">0dp</dimen>
</resources>
KitKat 이상의 경우 상태 표시줄 높이는 항상 24dp dimensions-v19.xml입니다.
<resources>
<dimen name="statusBarHeight">24dp</dimen>
<dimen name="appBarTopMargin">24dp</dimen>
</resources>
Lolipop의 경우 dimens-v21.xml, 필요한 경우 표고를 추가합니다.
<resources>
<dimen name="statusBarElevation">4dp</dimen>
</resources>
젤리빈 킷캣과 롤리팝의 결과는 다음과 같습니다.
res/values/styles.xml에서 상태 표시줄의 색상인 "colorPrimaryDark"를 변경하는 새 테마를 만들기만 하면 됩니다.
<style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimaryDark">@color/colorGray</item>
</style>
AndroidManifest.xml의 활동 테마를 원하는 것으로 수정하면 다음 활동에서 원래 테마를 선택하여 원래 색상으로 다시 변경할 수 있습니다.
<activity
android:name=".LoginActivity"
android:theme="@style/AppTheme.GrayStatusBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
res/values/colors.xml의 모양은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#c6d6f0</color>
<color name="colorGray">#757575</color>
</resources>
이 기능을 사용하여 상태 표시줄 색을 변경할 수 있습니다.Android L에서 작업은 API 21 이상을 의미하며 다음과 같은 색상 문자열이 필요합니다."#ffffff"
.
private void changeStatusBarColor(String color){
if (Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.parseColor(color));
}
}
저는 다음과 같은 요구사항이 있었습니다.상태 표시줄 색을 프로그래밍 방식으로 변경하여 투명하게 유지함으로써 탐색 드로어가 투명 상태 표시줄과 겹치도록 그릴 수 있습니다.
API를 사용하여 수행할 수 없습니다.
getWindow().setStatusBarColor(ContextCompat.getColor(activity ,R.color.my_statusbar_color)
만약 당신이 여기 스택 오버플로를 체크한다면, 코드 라인 앞에 있는 모든 사람들은 상태 표시줄의 투명성을 solid로 설정합니다.
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
상태 표시줄의 색상과 투명도를 다음과 같이 관리할 수 있습니다.
Android 4: API에서 상태 표시줄 색을 관리할 수 없기 때문에 할 수 있는 것이 많지 않습니다.사용자가 할 수 있는 유일한 방법은 상태 표시줄을 반투명으로 설정하고 UI의 색상 요소를 상태 표시줄 아래로 이동하는 것입니다.이를 위해서는 사용자가 가지고 놀아야 합니다.
android:fitsSystemWindows="false"
기본 레이아웃에 있습니다.상태 표시줄 아래에 레이아웃을 그릴 수 있습니다.그러면 당신은 메인 레이아웃의 맨 위에 있는 패딩을 가지고 놀아야 합니다.
Android 5 이상: 스타일을 정의해야 합니다.
<item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:statusBarColor">@android:color/transparent</item>
그러면 탐색 드로어가 상태 표시줄과 겹칠 수 있습니다.
그런 다음 상태 표시줄을 투명하게 유지하는 색을 변경하려면 상태 표시줄 색을 설정해야 합니다.
drawerLayout.setStatusBarBackgroundColor(ContextCompat.getColor(activity, R.color.my_statusbar_color))
여기서 drawerLayout은 다음과 같이 정의됩니다.
<android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true">
상태 표시줄의 색을 변경하려면res/values-v21/styles.xml
및 상태 표시줄의 색상
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_secondary</item>
<item name="colorAccent">@color/color_accent</item>
<item name="android:statusBarColor">#0000FF</item>
</style>
</resources>
상태 표시줄 색을 프로그래밍 방식으로 변경하려는 경우(및 장치에 Android 5.0이 있는 경우).이 방법은 모든 활동에서 상태 표시줄 색을 쉽게 변경할 수 있는 방법이며 다른 s 조각의 상태 표시줄 색이 다를 때 매우 쉬운 방법입니다.
/**
* @param colorId id of color
* @param isStatusBarFontDark Light or Dark color
*/
fun updateStatusBarColor(@ColorRes colorId: Int, isStatusBarFontDark: Boolean = true) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
val window = window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.statusBarColor = ContextCompat.getColor(this, colorId)
setSystemBarTheme(isStatusBarFontDark)
}
}
/** Changes the System Bar Theme. */
@RequiresApi(api = Build.VERSION_CODES.M)
private fun setSystemBarTheme(isStatusBarFontDark: Boolean) {
// Fetch the current flags.
val lFlags = window.decorView.systemUiVisibility
// Update the SystemUiVisibility depending on whether we want a Light or Dark theme.
window.decorView.systemUiVisibility = if (isStatusBarFontDark) lFlags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() else lFlags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}
Android 4.4 이상에서 작업하려면 이것을 사용하십시오.나는 Harpreet의 답변과 이 링크를 참조합니다.Android 및 투명 상태 표시줄
먼저 Activity의 onCreate 메서드에서 setStatusBarColored 메서드를 호출합니다(유틸리티 클래스에 넣었습니다).저는 여기 이미지를 사용합니다, 색상을 사용하도록 변경할 수 있습니다.
public static void setStatusBarColored(Activity context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
Window w = context.getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
int statusBarHeight = getStatusBarHeight(context);
View view = new View(context);
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
view.getLayoutParams().height = statusBarHeight;
((ViewGroup) w.getDecorView()).addView(view);
view.setBackground(context.getResources().getDrawable(R.drawable.navibg));
}
}
public static int getStatusBarHeight(Activity context) {
int result = 0;
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = context.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
이전:
이후:
상태 표시줄의 색상이 변경되었지만, 내비게이션 표시줄이 잘려서 onCreate 방법으로 내비게이션 표시줄의 여백이나 오프셋을 설정해야 합니다.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, (int)(this.getResources().getDimension(R.dimen.navibar_height)));
layoutParams.setMargins(0, Utils.getStatusBarHeight(this), 0, 0);
this.findViewById(R.id.linear_navi).setLayoutParams(layoutParams);
}
그러면 상태 표시줄이 다음과 같이 나타납니다.
값의 color.xml에 있는 colorPrimary 색상을 상태 표시줄에 원하는 색상으로 편집합니다.예:
<resources>
<color name="colorPrimary">#800000</color> // changes the status bar color to Burgundy
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="red">#FF0000</color>
<color name="white">#FFFFFF</color>
<color name="cream">#fffdd0</color>
<color name="burgundy">#800000</color>
솔루션은 매우 간단합니다. style.xml에 다음 행을 추가하십시오.
다크 모드의 경우:
<item name="android:windowLightStatusBar">false</item>
<item name="android:statusBarColor">@color/black</item>
styles.xml 파일에 이 행을 추가하기만 하면 됩니다.
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- This is used for statusbar color. -->
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<!-- This is used for statusbar content color. If statusbarColor is light, use "true" otherwise use "false"-->
<item name="android:windowLightStatusBar">false</item>
</style>
이것이 킷캣에서 저에게 효과가 있었고 좋은 결과를 얻었습니다.
public static void setTaskBarColored(Activity context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
Window w = context.getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//status bar height
int statusBarHeight = Utilities.getStatusBarHeight(context);
View view = new View(context);
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
view.getLayoutParams().height = statusBarHeight;
((ViewGroup) w.getDecorView()).addView(view);
view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar));
}
}
PrimaryDark 색상을 원하는 색상으로 res/values/styles.xml 파일로 변경합니다.
<resources>
<color name="colorPrimary">#800000</color>
<color name="colorPrimaryDark">#303F9F</color> //This Line
<color name="colorAccent">#FF4081</color>
<color name="red">#FF0000</color>
<color name="white">#FFFFFF</color>
<color name="cream">#fffdd0</color>
<color name="burgundy">#800000</color>
</resources>
하나 더 해결책:
final View decorView = w.getDecorView();
View view = new View(BaseControllerActivity.this);
final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get());
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight));
view.setBackgroundColor(colorValue);
((ViewGroup)decorView).addView(view);
Java: 활동의 onCreate 메서드에서 사용합니다.
Window window = this.getWindow();
window.setStatusBarColor(this.getResources().getColor(R.color.main_screen_bg_color));
코틀린:
window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
이 솔루션은 API >= 23에서만 작동합니다.API 수준 30에서 setSystemUiVisibility()는 더 이상 사용되지 않습니다.따라서 다음과 같이 WindowInsetsControllerComp를 사용해야 합니다.
fun changeColorStatusBar(color: Int = R.color.white) {
val window: Window = window
val decorView = window.decorView
val wic = WindowInsetsControllerCompat(window, decorView)
wic.isAppearanceLightStatusBars = true
// And then you can set any background color to the status bar.
window.statusBarColor = ContextCompat.getColor(this, color)
}
사용자 지정 그리기 가능 파일을 설정하려면 이 코드 조각을 사용합니다.
fun setCustomStatusBar(){
if (Build.VERSION.SDK_INT >= 21) {
val decor = window.decorView
decor.viewTreeObserver.addOnPreDrawListener(object :
ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
decor.viewTreeObserver.removeOnPreDrawListener(this)
val statusBar = decor.findViewById<View>
(android.R.id.statusBarBackground)
statusBar.setBackgroundResource(R.drawable.bg_statusbar)
return true
}
})
}
}
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorPrimaryVariant">@color/colorPrimaryDark</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
Notice:
트colorPrimaryVariant
아주 오래된 질문입니다.그러나 상태 표시줄 색을 변경하려는 사용자의 경우ANDROID 5.0, API 21
에 의하면theme
Dark
그리고.Light
심지어.Device DEFAULT
는 다음시후이입코력드 다음에 .super.onCreate(savedInstanceState);
그이에 앞에setContentView(R.layout.activity_main);
int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (currentNightMode) {
case Configuration.UI_MODE_NIGHT_NO:
// Night mode is not active on device
// For WHITE status bar Icons color to dark
Window window = getWindow();
View view = window.getDecorView();
new WindowInsetsControllerCompat(window, view).setAppearanceLightStatusBars(true);
break;
case Configuration.UI_MODE_NIGHT_YES:
// Night mode is active on device
break;
}
그리고 당신의 안에서도.style.xml
줄을 <item name="android:statusBarColor">@color/colorWhite</item>
이 코드를 사용하여 상태 표시줄을 투명으로 변경했습니다.
activity?.window?.setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
)
이 코드를 사용하는 스타일로 색상으로 변경하기 위해 나는 onDetach()의 fragment에서 사용했습니다.
activity?.window?.clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
상태 표시줄 색을 변경할 활동에서 메서드를 호출합니다.
blackIconStatusBar(this, R.color.white);
메서드 정의
public static void blackIconStatusBar(Activity activity, int color) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
activity.getWindow().setStatusBarColor(ContextCompat.getColor(activity, color));
}
에 values/theme.xml이라는 합니다.name="android:statusBarColor"
.
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.YourAppName" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
...
...
...
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">@color/purple_700</item>
</style>
</resources>
Inkotlin에서는 다음을 사용하여 이 문제를 해결할 수 있었습니다.
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = ContextCompat.getColor(this, android.R.color.transparent)
특정 활동에 대해서만 다음을 사용합니다.
Window window = this.getWindow();
window.setStatusBarColor(this.getResources().getColor(R.color.red));
또는 코틀린으로
window.statusBarColor = ContextCompat.getColor(this, R.color.red)
활동 만들기에서.
전체 응용 프로그램에 대해 memes.xml의 "colorPrimaryVariant"를 업데이트합니다.
<style name="Theme.Demo" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/text_color</item>
<!-- Primary brand color, used for status bar color -->
<item name="colorPrimaryVariant">@color/red</item>
</style>
언급URL : https://stackoverflow.com/questions/22192291/how-to-change-the-status-bar-color-in-android
'programing' 카테고리의 다른 글
장시간(예: 몇 분) 동안 타이머 설정 (0) | 2023.06.05 |
---|---|
각 그룹에서 최대값이 있는 행 선택 (0) | 2023.06.05 |
인스턴스 상태 저장을 사용하여 활동 상태를 저장하려면 어떻게 해야 합니까? (0) | 2023.06.05 |
Firebase web user.reauthenticate에 필요한 "credential" 개체를 만드는 방법자격 증명() 메서드를 사용하시겠습니까? (0) | 2023.06.05 |
배열 값으로 열을 순차적으로 업데이트 (0) | 2023.06.05 |