롤리팝 : 투명하게 설정된 색상으로 statusBar 뒤에 그리기


142

테마에서 다음 줄만 사용하여 Lollipop에 대해 statusBar 색상을 투명으로 설정했습니다.

<item name="android:statusBarColor">@android:color/transparent</item>

이제 그 뒤에 그릴 필요가 있지만 그 뒤에는 어떤 견해도 가져올 수 없습니다. windowTranslucentStatus속성으로 사용 하는 방법을 알고 있지만이 속성을 사용하지 않으려면 statusBar의 색상이 투명으로 설정되므로 무시하십시오.


2
당신은 또한 사용할 수 있습니다android:fitsSystemWindows="true"
Aznix

답변:


385

방법 # 1 :

완전히 투명한 상태 표시 줄을 얻으려면 statusBarColorAPI 21 이상에서만 사용할 수 있는을 사용해야 합니다. windowTranslucentStatusAPI 19 이상에서 사용할 수 있지만 상태 표시 줄에 색조 배경을 추가합니다. 그러나 설정 windowTranslucentStatusstatusBarColor투명으로 변경 하지 않고 한 가지를 달성 합니다. SYSTEM_UI_FLAG_LAYOUT_STABLESYSTEM_UI_FLAG_LAYOUT_FULLSCREEN플래그를 설정합니다 . 동일한 효과를 얻는 가장 쉬운 방법은 이러한 플래그를 수동으로 설정하는 것입니다.이 플래그는 Android 레이아웃 시스템에 의해 부과 된 삽입을 효과적으로 비활성화하고 사용자를 보호합니다.

onCreate메소드 에서이 라인을 호출합니다 .

getWindow().getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

/res/values-v21/styles.xml에서 투명도를 설정해야합니다.

<item name="android:statusBarColor">@android:color/transparent</item>

또는 프로그래밍 방식으로 투명도를 설정하십시오.

getWindow().setStatusBarColor(Color.TRANSPARENT);

이 접근 방식의 좋은 점은 색조가 지정된 반투명 상태 표시 줄의 투명 상태 표시 줄을 교환하여 동일한 레이아웃과 디자인을 API 19에서도 사용할 수 있다는 것입니다.

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

방법 # 2 :

상태 표시 줄 아래에보기를 배치하는 대신 배경 이미지 만 페인트해야하는 경우, 활동 테마의 배경을 원하는 이미지로 설정하고 방법 #에 표시된대로 상태 표시 줄 투명도를 설정하면됩니다. 1. 몇 달 전부터 Android Police 기사 의 스크린 샷을 만드는 데 사용한 방법 입니다.

방법 # 3 :

일부 레이아웃의 표준 시스템 삽입을 무시하고 다른 레이아웃에서 작동하도록 유지하려면 유일하게 실행 가능한 방법은 자주 연결된 ScrimInsetsFrameLayout클래스 와 작업하는 것입니다 . 물론, 해당 수업에서 수행 된 일부 작업이 모든 시나리오에 필요한 것은 아닙니다. 예를 들어, 합성 상태 표시 줄 오버레이를 사용 init()하지 않으 려면 메소드의 모든 내용을 주석 처리하고 attrs.xml 파일에 아무것도 추가하지 않아도됩니다. 이 접근 방식이 효과가있는 것을 보았지만이 방법을 사용하면 해결할 수있는 많은 작업이 필요할 수 있습니다.

또한 여러 레이아웃을 래핑하는 것에 반대하는 것을 보았습니다. 하나의 레이아웃을 다른 레이아웃 내부에 배치하는 경우 match_parent높이와 너비 모두에 영향을 미치므로 성능에 대한 걱정은 너무 사소합니다. 어쨌든 확장 클래스 FrameLayout를 원하는 다른 유형의 레이아웃 클래스 로 변경하여 이러한 상황을 완전히 피할 수 있습니다 . 잘 작동합니다.


9
감사합니다. SYSTEM_UI_FLAG_LAYOUT_STABLESYSTEM_UI_FLAG_LAYOUT_FULLSCREEN플래그를 설정하면 내가 찾고있는 솔루션이었습니다.
alxscms 2018 년

3
한 달 동안 첫 번째 솔루션을 검색했습니다. 감사합니다!
NeoKree

1
안녕하세요. 코드가 완벽하게 작동합니다. 그러나 조각을 종료하면 변경 사항을 어떻게 롤백해야합니까?
TheOnlyAnil

3
이 작동하지 않습니다 CollapsingToolbarLayoutToolbar완전히 반투명없는 상태 표시 줄의 숙박과 : android:statusBarColor영향을지지 않습니다
콘스탄틴 Konopko

감사. 전체 화면이 아닌 활동으로 되돌리려면 developer.sonymobile.com/knowledge-base/tutorials/…를 읽으십시오 .
CoolMind

43

이것은 내 경우에 효과가 있었다


// Create/Set toolbar as actionbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

// Check if the version of Android is Lollipop or higher
if (Build.VERSION.SDK_INT >= 21) {

    // Set the status bar to dark-semi-transparentish
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

    // Set paddingTop of toolbar to height of status bar.
    // Fixes statusbar covers toolbar issue
    toolbar.setPadding(0, getStatusBarHeight(), 0, 0);
}

// A method to find height of the status bar
public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

statusBars 작업에 대한 자세한 내용 : youtube.com/watch?v=_mGDMVRO3iE



@TheOnlyAnil은 고정 툴바 높이를 정의합니다 :) "56dp"정도가 좋아 보입니다
Michael

4
이와 같이 상태 표시 줄 높이를 얻는 것은 완전히 지원되지 않고 문서화되지 않으며 향후 버전에서 반드시 중단됩니다. 대신 fitsSystemWindows = "true"를 사용하십시오.
Greg Ennis

1
글쎄, 나는 때때로 당신이해야 할 수도 있습니다.
Greg Ennis

2
이 대화에서 Chris Banes (Google 엔지니어)에 따르면 이것은 매우 나쁜 생각입니다. youtube.com/watch?v=_mGDMVRO3iE
Martin Marconcini

1
@Michael FWIW, 나는 과거에 이것을했고 WindowInsets api an (메서드)는 이것을 "생각하지 않아도 간단하고 수행해야합니다."하지만, 그렇지 않습니다. 불필요한 오버 헤드가 많습니다. Google은 항상 80 % 완료되었으며 마지막 20 %는 개발자에게 맡깁니다. ¯_ (ツ) _ / ¯
Martin Marconcini 2016 년

21

이 테마를보십시오

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimaryDark">@android:color/transparent</item>
    <item name="colorPrimary">@color/md_blue_200</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

레이아웃이 설정되어 있는지 확인하십시오

android:fitsSystemWindows="false"

4
설정 android:fitsSystemWindows="false"은 툴바를 반으로 자릅니다.
Hammad Nasir

16

대신에

<item name="android:statusBarColor">@android:color/transparent</item>

다음을 사용하십시오.

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

'MainActivity'레이아웃에서 상단 패딩 (기본적으로 추가됨)을 제거해야합니다.

이렇게해도 상태 표시 줄이 완전히 투명 해지지는 않으며 상태 표시 줄 위에 여전히 "흐리게 검은 색"오버레이가 표시됩니다.


2
를 사용할 때 <item name="android:windowTranslucentStatus">true</item>안드로이드가 내가 찾고있는 것이 아닌 상태 표시 줄 아래에 어두운 검은 색 배경을 넣습니다. 이 검은 색 배경을 가지지 않는 방법이 있습니까?
alxscms

1
많은 것을 시도했지만 바랜 검은 배경을 제거하는 방법을 찾을 수 없습니다. 따라서 나는 안드로이드에서 불가능하다고 말함으로써 연구를 끝내고 있습니다 (ScririmLayout조차도 불가능합니다). 상태 표시 줄을 항상 적절하게 읽을 수 있기 때문에 이런 종류의 의미가 있습니다. 위의 답변을 업데이트하겠습니다.
Jeroen Mols

상태 표시 줄에 투명 색상을 넣을 수없는 것은 매우 이상하다고 생각합니다. 이 검은 색 바랜 배경을 제거 할 수 없다는 것이 왜 말이되는지 이해하지만, 상태 표시 줄 아이콘을 표시하기에 충분히주의를 기울이는 것은 아닙니다. 다음은 투명한 상태 표시 줄 androidpolice.com/2014/07/04/… 사용을 보여주는 android police 기사입니다 . 저자에게 연락을 시도합니다.
alxscms

1
그와 연락 할 수 있기를 바랍니다. 나도 이것에 매우 관심이 있어요 :)
Jeroen Mols

큰! 내 답변도 업데이트했습니다.
Jeroen Mols

9

Cody Toombs의 솔루션은 거의 나를 위해 속임수를 사용했습니다. 이것이 Xamarin 과 관련 이 있는지 확실 하지 않지만 이제 수용 가능한 해결책이 있습니다.

예

이것은 내 설정입니다.

Android.Support v4 및 v7 패키지를 참조한 Android 프로젝트가 있습니다. 두 가지 스타일이 정의되어 있습니다.

values ​​/ styles.xml :

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="MyStyle" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">true</item>
    </style>
</resources>

values-v21 / styles.xml :

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="MyStyle" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>
</resources>

AndroidManifest는 "MyStyle"을 대상으로합니다.

AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.agn.test.test">
    <uses-sdk android:minSdkVersion="10" />
    <application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:theme="@style/MyStyle">
    </application>
</manifest>

그리고 마지막으로 주요 활동의 코드 :

[Activity (Label = "Test", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
    protected override void OnCreate (Bundle savedInstanceState)
    {
        base.OnCreate (savedInstanceState);

        SetContentView (Resource.Layout.Main);
        //Resource.Layout.Main is just a regular layout, no additional flags. Make sure there is something in there like an imageView, so that you can see the overlay.

        var uiOptions = (int)Window.DecorView.SystemUiVisibility;
        uiOptions ^= (int)SystemUiFlags.LayoutStable;
        uiOptions ^= (int)SystemUiFlags.LayoutFullscreen;
        Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOptions;

        Window.AddFlags (WindowManagerFlags.DrawsSystemBarBackgrounds);
    }
}

DrawsSystemBarBackgrounds 플래그를 설정하면 모든 차이가 발생합니다.

Window.AddFlags (WindowManagerFlags.DrawsSystemBarBackgrounds); 

사실 너무 많은 시간을 제대로 보냈습니다. 이 답변이 같은 일을 달성하려는 사람에게 도움이 되길 바랍니다.


1
android:windowTranslucentStatusAPI 레벨 19 이상이 필요합니다. android:minSdkVersion 이 10 인 동안 values ​​/ styles.xml 에서 API를 어떻게 사용할 수 있습니까?
mradzinski

7

@Cody Toombs의 답변으로 인해 탐색 모음 뒤에 레이아웃이 나타나는 문제가 발생합니다. 그래서 내가 찾은 것은 @Kriti가 제공 한이 솔루션을 사용 하는 것입니다.

Kotlin 코드 스 니펫은 다음과 같습니다.

if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
    setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true)
}

if (Build.VERSION.SDK_INT >= 19) {
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}

if (Build.VERSION.SDK_INT >= 21) {
    setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false)
    getWindow().setStatusBarColor(Color.TRANSPARENT)
}

private fun setWindowFlag(activity: Activity, bits: Int, on: Boolean) {

    val win: Window = activity.getWindow()

    val winParams: WindowManager.LayoutParams = win.getAttributes()
    if (on) {
        winParams.flags = winParams.flags or bits
    } else {
        winParams.flags = winParams.flags and bits.inv()
    }
    win.setAttributes(winParams)
}

또한 추가해야합니다

android:fitsSystemWindows="false"

레이아웃의 루트보기.


3

나는 같은 문제가있어서 상태 표시 줄 API 19 이상을 그리는 ImageView를 만듭니다.

상태 표시 줄 뒤에 사용자 정의 이미지 설정 gist.github.com

public static void setTransparent(Activity activity, int imageRes) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        return;
    }
    // set flags
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
    } else {
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }

    // get root content of system window
    //ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);
    // rootView.setFitsSystemWindows(true);
    // rootView.setClipToPadding(true);

    ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
    if (contentView.getChildCount() > 1) {
        contentView.removeViewAt(1);
    }

    // get status bar height
    int res = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
    int height = 0;
    if (res != 0)
        height = activity.getResources().getDimensionPixelSize(res);

    // create new imageview and set resource id
    ImageView image = new ImageView(activity);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height);
    image.setLayoutParams(params);
    image.setImageResource(imageRes);
    image.setScaleType(ScaleType.MATRIX);

    // add image view to content view
    contentView.addView(image);
    // rootView.setFitsSystemWindows(true);

}

2

ScrimInsetFrameLayout을 사용할 수 있습니다

https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/ScrimInsetsFrameLayout.java

android : fitsSystemWindows = "true"가 스크림 레이아웃에서 설정되어야합니다!


나는 그 수업을 보았지만 RelativeLayout대신에 FrameLayout? 를 사용하고 싶다면 어떻게해야 합니까?
alxscms

3
프레임 레이아웃 내에서 상대 레이아웃을 사용하십시오.
Murtaza Khursheed Hussain

2

1
앱 성능은 다양 할 수있는 많은 요소에 따라 다릅니다. 탈출구가 없다면 시도해보십시오. 행운의 베스트
Murtaza Khursheed Hussain

나는 당신이 의미하는 것을 얻지 만,이 사용자 정의 프레임 레이아웃에서 구현 된 레이아웃을 구현 할 수있는 방법이 없다면 다른 해결책이 있어야합니다. 그러나 어떤 식 으로든 감사합니다
alxscms

1

게시 된 일부 솔루션과 유사하지만 제 경우에는 상태 표시 줄을 투명하게하고 작업 표시 줄의 위치를 ​​약간의 마진으로 고정하십시오

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setStatusBarColor(Color.TRANSPARENT);
    FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) toolbar.getLayoutParams();
    lp.setMargins(0, -getStatusBarHeight(), 0, 0);
}

툴바와 루트 뷰에서 사용했습니다.

android:fitsSystemWindows="true"

1
getStatusBarHeight ()는 표준이 아닙니다
Roel

이 메소드는 @ mike-milla의 솔루션에서 구현됩니다. public int getStatusBarHeight () {int result = 0; int resourceId = getResources (). getIdentifier ( "status_bar_height", "dimen", "android"); if (resourceId> 0) {result = getResources (). getDimensionPixelSize (resourceId); } 결과 반환; }
jegumi

감사. 내가 그렇게 : AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams (); lp.topMargin + = getStatusBarHeight ();
CoolMind

1

@laobie의 StatusBarUtil 라이브러리는 StatusBar 에서 이미지를 쉽게 그릴 수 있도록 도와줍니다.

에 추가하십시오 build.gradle:

compile 'com.jaeger.statusbarutil:library:1.4.0'

그런 다음 활동 세트에서

StatusBarUtil.setTranslucentForImageView(Activity activity, int statusBarAlpha, View viewNeedOffset)

레이아웃에서

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <ImageView
        android:layout_alignParentTop="true"
        android:layout_width="match_parent"
        android:adjustViewBounds="true"
        android:layout_height="wrap_content"
        android:src="@drawable/toolbar_bg"/>

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/view_need_offset"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@android:color/transparent"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

        <!-- Your layout code -->
    </android.support.design.widget.CoordinatorLayout>
</RelativeLayout>

자세한 내용 은 github 페이지 에서 데모를 다운로드 하거나 모든 기능을 사용하십시오.

참고 : KitKat 이상을 지원하십시오.

다른 사람을 돕는 희망!


0

Android Studio 1.4에서는 보일러 플레이트 코드가 포함 된 템플릿 프로젝트가 OverlayAppbarLayout 및 / 또는 툴바에 테마를 설정합니다 . 또한 fitSystemWindow속성 = true로 상태 표시 줄 뒤에 렌더링되도록 설정되어 있습니다 . 그러면 도구 모음 만 상태 표시 줄 바로 아래에 렌더링되고 다른 모든 도구 모음 아래에 렌더링됩니다. 따라서 위에 제공된 솔루션은 저절로 작동하지 않습니다. 다음과 같이 변경해야합니다.

  • 툴바의 오버레이 테마를 제거하거나 오버레이 가 아닌 테마로 변경합니다.
  • styles-21.xml 파일 에 다음 코드를 넣으십시오 .

    @android : 컬러 / 투명

  • 이 테마를 AndroidManifest.xml 파일 의 탐색 창을 포함하는 활동에 지정 하십시오.

그러면 탐색 드로어가 투명 상태 표시 줄 뒤에서 렌더링됩니다.


0

테마에서 이러한 속성을 설정하기 만하면됩니다.

<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>

1
이렇게하면 레이아웃이 UI 탐색 버튼 (화면 내비게이션이있는 장치) 아래로 떨어질 것입니다. 이로 인해 앱에서 하단 네비게이션보기에 액세스 할 수 없었습니다. 따라서 Nexus에서 테스트 한
후이

0

수락 된 답변은 CollapsingToolbarLayout을 사용하여 저에게 효과적이었습니다. 그러나 setSytstemUiVisibility()해당 함수에 대한 이전 호출을 재정의하는 것이 중요 합니다. 따라서 동일한 뷰에서 다른 곳에서 해당 함수를 사용하는 경우 View.SYSTEM_UI_FLAG_LAYOUT_STABLEand View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN플래그 를 포함해야합니다. 그렇지 않으면 새 호출로 재정의됩니다.

이것은 나를위한 경우이며, 전화를 걸고있는 다른 장소에 두 개의 플래그를 추가 setSystemUiVisibility()하면 수락 된 답변이 완벽하게 작동했습니다.


0

여기에 더 많은 정보를 추가하겠습니다. 최신 Android 개발로 인해 상태 표시 줄에서 많은 경우를 처리하기가 매우 쉽습니다. 다음은 내 관찰 내용입니다.styles.xml

  1. 배경색 : SDK 21+의 경우 많은 답변에서 언급했듯이 <item name="android:windowTranslucentStatus">true</item> 상태 표시 줄을 투명하게 만들고 UI 앞에 표시합니다. 당신의 활동은 상단의 전체 공간을 차지할 것입니다.
  2. 배경색 : 다시 SDK 21+의 경우 <item name="android:statusBarColor">@color/your_color</item>다른 것에 영향을 미치지 않고 상태 표시 줄에 색상을 지정합니다.

  3. 그러나 이후 기기 (Android M / +)에서는 아이콘 이 다른 색조로 나오기 시작했습니다. 폴더 의 styles.xml파일 을 재정의 values-23하고 추가 하면 OS가 SDK 23 / + 아이콘에 더 어두운 회색 음영을 줄 수 있습니다 <item name="android:windowLightStatusBar">true</item>.
    이렇게하면 상태 표시 줄에 밝은 색이있는 경우 사용자에게 더 잘 보이는 상태 표시 줄을 제공 할 것입니다 (많은 Google 앱이 밝은 배경을 가지고 있지만 아이콘이 회색으로 표시되는 방법을 생각하십시오).
    포인트 2를 통해 상태 표시 줄에 색상을 제공하는 경우 이것을 사용하는 것이 좋습니다.

  4. 최신 장치에서 SDK 29 / +는 사용자가 제어 할 수있는 시스템 전체의 밝고 어두운 테마를 제공합니다. 개발자는 스타일 파일을 새 values-night폴더 에서 재정 의하여 사용자에게 2 가지 다른 환경을 제공해야합니다.
    여기서 다시 한 번 포인트 2가 "상태 표시 줄에 배경색"을 제공하는 데 효과적이라는 것을 알았습니다. 그러나 시스템이 내 앱의 상태 표시 줄 아이콘 색상을 변경하지 않았습니다. 스타일의 내 일 버전은 가벼운 테마로 구성되어 있기 때문에,이 방법은 사용자가 낮은 가시성 (밝은 배경에 흰색 아이콘)에서 나빠질 수 있으므로
    이 문제는 포인트 # 3 접근법을 사용하거나에서 스타일 파일을 대체하여 해결할 수있는 values-29폴더와 새로운 사용 API <item name="android:enforceStatusBarContrast">true</item>. 배경색이 너무 밝은 경우 아이콘에 회색 색조가 자동으로 적용됩니다.


-1

이 작업을 수행하는 데 사용하는 테마는 다음과 같습니다.

<style name="AppTheme" parent="@android:style/Theme.NoTitleBar">

    <!-- Default Background Screen -->
    <item name="android:background">@color/default_blue</item>
    <item name="android:windowTranslucentStatus">true</item>

</style>

1
이상한 downvoter가 있습니다. 해결책이 귀하와 다른 사람들에게 옳았더라도 다른 답변에 전달하는 대신 공감할 것입니다.
CoolMind

내가 요구하는 것은 설명입니다. 나는 사람들이 설명없이 공감할 수 있어야한다고 생각하지 않습니다.
드로이드 크리스

나도 그렇게 생각해
CoolMind

이 번들에서 백그라운드 옵션이 제대로 작동하지 않는다고 설명하겠습니다. 대답을 수정하십시오.
Morozov

흠 ...이 작업을 수행하는 Android 버전은 무엇입니까? Android M에서이 구성을 사용하고 있습니다.
Droid Chris

-3

올바른 솔루션은 활동 태그 아래의 XML 속성을 아래 스타일로 변경하는 것입니다. 그냥 작동합니다

  android:theme="@style/Theme.AppCompat.Light.NoActionBar"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.