Lollipop: Rengi saydam olarak ayarlanmış durumunun arkasına çekin


142

StatusBar rengimi, yalnızca temamdaki aşağıdaki satırla Lollipop için şeffaf olarak ayarladım:

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

Şimdi arkamdan çizmem gerekiyor, ama arkasından herhangi bir görüş çizemiyorum. windowTranslucentStatusÖzelliği ile nasıl yapacağımı biliyorum , ancak daha sonra statusBar şeffaf olarak ayarlanmış rengini göz ardı edecek bu özelliği kullanmak istemiyorum.


2
Ayrıca kullanabilirsinizandroid:fitsSystemWindows="true"
Aznix

Yanıtlar:


385

Yöntem 1:

Tamamen şeffaf bir durum çubuğu elde etmek için statusBarColor, yalnızca API 21 ve sonraki sürümlerde bulunan kullanmanız gerekir. windowTranslucentStatusAPI 19 ve sonraki sürümlerde kullanılabilir, ancak durum çubuğu için renkli bir arka plan ekler. Ancak, ayar saydam olarak windowTranslucentStatusdeğiştirmenin yapmadığı bir şeyi statusBarColorbaşarır: SYSTEM_UI_FLAG_LAYOUT_STABLE ve SYSTEM_UI_FLAG_LAYOUT_FULLSCREENişaretlerini ayarlar . Aynı etkiyi elde etmenin en kolay yolu, Android düzen sistemi tarafından dayatılan ekleri etkili bir şekilde devre dışı bırakan ve sizi kendinize karşı savunmaya bırakan bu bayrakları manuel olarak ayarlamaktır.

Bu satırı onCreateyönteminizde çağırırsınız :

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

Saydamlığı /res/values-v21/styles.xml dosyasında da ayarladığınızdan emin olun:

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

Veya saydamlığı programlı olarak ayarlayın:

getWindow().setStatusBarColor(Color.TRANSPARENT);

Bu yaklaşımın iyi yanı, aynı mizanpajların ve tasarımların, renkli yarı saydam durum çubuğu için şeffaf durum çubuğunu alıp API 19'da da kullanılabilmesidir.

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

Yöntem # 2:

Durum çubuğunuzun altında yalnızca bir arka plan görüntüsü çizmeniz gerekiyorsa, bunun yerine bir görünüm yerleştirmek yerine, bu işlem etkinliğinizin temasının arka planını istediğiniz görüntüye ayarlayıp durum çubuğu saydamlığını yöntem # 'de gösterildiği gibi ayarlayarak yapılabilir. 1. Birkaç ay önceki Android Police makalesi için ekran görüntüsü oluşturmak için kullandığım yöntem buydu .

Yöntem # 3:

Bazı mizanpajların standart sistem eklerini diğerlerinde çalışmaya devam ederken göz ardı etmek zorunda kalırsanız, bunu yapmanın tek uygun yolu sık bağlantılı ScrimInsetsFrameLayoutsınıfla çalışmaktır. Tabii ki, o sınıfta yapılan bazı şeyler tüm senaryolar için gerekli değildir. Örneğin, sentetik durum çubuğu kaplamasını kullanmayı planlamıyorsanız, init()yöntemdeki her şeyi açıklayın ve attrs.xml dosyasına hiçbir şey eklemeyi zahmet etmeyin. Bu yaklaşımın işe yaradığını gördüm, ancak bence bu, etrafta dolaşmak için çok fazla iş olabilecek başka bazı etkiler getirdiğini göreceksiniz.

Ayrıca, birden fazla mizanpajı sarmaya karşı olduğunuzu gördüm. Her ikisinin de match_parentyükseklik ve genişliğe sahip olduğu bir yerleşimi diğerinin içine sarmak durumunda , performans sonuçları endişelenmek için çok önemsizdir. Ne olursa olsun, bu durumu tamamen genişlettiği sınıfı FrameLayoutistediğiniz başka bir Layout sınıfına değiştirerek önleyebilirsiniz . Sadece iyi çalışır.


9
Çok teşekkürler, SYSTEM_UI_FLAG_LAYOUT_STABLEve SYSTEM_UI_FLAG_LAYOUT_FULLSCREENbayrakları ayarlamak aradığım çözüm oldu.
alxscms

3
Bir ay boyunca ilk çözümünüzü aradım. Teşekkür ederim!
NeoKree

1
Selam. Kodunuz mükemmel şekilde çalışıyor. Ancak parçadan çıktığımda, değişiklikleri nasıl geri almalıyım?
TheOnlyAnil

3
Bu CollapsingToolbarLayoutve ile çalışmaz Toolbar: durum çubuğu tamamen yarı saydam değil ve android:statusBarColorhiçbir etkisi olmaz
Konstantin Konopko

Teşekkürler. Daha sonra tam ekran olmayan bir etkinliğe geri dönmek isterseniz developer.sonymobile.com/knowledge-base/tutorials/… adresini okuyun .
CoolMind

43

Bu benim durumum için çalıştı


// 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 ile çalışma hakkında daha fazla bilgi için: youtube.com/watch?v=_mGDMVRO3iE



@TheOnlyAnil sabit bir araç çubuğu yüksekliği tanımlar :) "56dp" ya da öylesine iyi görünmelidir
Michael

4
Durum çubuğu yüksekliğinin bu şekilde elde edilmesi tamamen desteklenmez, belgesizdir ve gelecekteki sürümlerde kesinlikle kırılacaktır. Bunun yerine fitsSystemWindows = "true" kullanın.
Greg Ennis

1
Bunu da yapıyorum çünkü bazen sadece yapmanız gerekiyor.
Greg Ennis

2
Bu konuşmada Chris Banes'e (Google Mühendisi) göre bu çok kötü bir fikir: youtube.com/watch?v=_mGDMVRO3iE
Martin Marconcini

1
@Michael FWIW, bunu geçmişte yaptım ve bunu yapmak için WindowInsets api bir (yöntem) “basit olmalı ve bunu düşünmek zorunda kalmadan yapmalıyız”, ama değil, çok fazla gereksiz yük. Google her zaman% 80 tamamlandı ve son% 20'yi geliştiricilere bırakın… gerçekleşene kadar tamamen hackleyen. Mar_ (ツ) _ / ¯
Martin Marconcini

21

Bu temayı deneyin

<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>

Düzeninizin ayarlandığından emin olun

android:fitsSystemWindows="false"

4
ayarı android:fitsSystemWindows="false"araç çubuğunu yarıya indirir.
Hammad Nasir

16

Onun yerine

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

Aşağıdakileri kullanın:

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

Ve 'MainActivity' düzeninizdeki üst dolguyu (varsayılan olarak eklenir) çıkardığınızdan emin olun.

Bunun durum çubuğunu tamamen saydam yapmadığını ve durum çubuğunuzda hala "soluk siyah" bir yer paylaşımı olacağını unutmayın.


2
Kullanırken <item name="android:windowTranslucentStatus">true</item>, android durum çubuğunun altına soluk siyah bir arka plan koydu. Bu siyah soluk arka plana sahip olmamak için herhangi bir yol var mı?
alxscms

1
Birçok şeyi denedim, ama solmuş siyah arka planı kaldırmanın bir yolunu bulamıyorum. Bu nedenle araştırmamı Android'de mümkün olmadığını söyleyerek bitiriyorum (ScrimLayout ile bile değil). Bu tür bir anlam ifade eder, çünkü durum çubuğunuzun her zaman doğru okunabilirliğini sağlar. Yukarıdaki cevabımı güncelleyeceğim.
Jeroen Mols

Durum çubuğuna şeffaf bir renk koyabilmek, arkasına çizmeden çok garip olacağını düşünüyorum. Neden bu siyah soluk arka planı kaldıramayacağınızı anladığınızı anlıyorsunuz, ancak durum çubuğu simgesini görünür tutacak kadar dikkatli olmak kesinlikle zor değil. İşte şeffaf bir durum çubuğu androidpolice.com/2014/07/04/… kullanımını gösteren android polis bir makale . Yazara ulaşmaya çalışacağım.
alxscms

1
Umarım onunla iletişime geçebilirsin. Bunu da yapmakla çok ilgileniyorum :)
Jeroen Mols

Harika! Cevabım da güncellendi.
Jeroen Mols

9

Cody Toombs'un çözümü neredeyse benim için hile yaptı. Bunun Xamarin ile ilgili olup olmadığından emin değilim , ancak şimdi kabul edilebilir bir çözümüm var:

Misal

Bu benim kurulumum:

Android.Support v4 ve v7 paketlerine başvurduğum bir Android projem var. Tanımlı iki stil var:

değerler / 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>

değerler 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 hedefleri "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>

Ve son olarak Ana Faaliyetteki kod:

[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);
    }
}

Ben DrawsSystemBarBackgrounds bayrağı ayarladığım dikkat edin, bu tüm fark yaratır

Window.AddFlags (WindowManagerFlags.DrawsSystemBarBackgrounds); 

Doğruyu düzeltmek için çok zaman harcadım. Umarım bu cevap aynı şeyi başarmaya çalışan herkese yardımcı olur.


1
android:windowTranslucentStatusAPI düzeyi 19 veya üstü gerekir, 10'a sahipken değerleri / styles.xml dosyasında kullanmanız nasıl mümkün olabilir android:minSdkVersion?
mradzinski

7

@Cody Toombs'un cevabı, düzeni gezinme çubuğunun arkasına getiren bir soruna yol açar. Bulduğum şey @Kriti tarafından verilen bu çözümü kullanıyor.

İşte aynı Kotlin kod snippet'i:

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)
}

Ayrıca eklemeniz gerekir

android:fitsSystemWindows="false"

düzeninizin kök görünümü.


3

Durum çubuğu API 19+ arkasında çizilen ImageView oluşturmak ben de aynı sorunu vardı

Durum Çubuğunun arkasına özel görüntü ayarlama 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'u kullanabilirsiniz

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

android: fitsSystemWindows = "true" bez düzeninde ayarlanmalıdır!


Bu sınıfı gördüm ama ya bir RelativeLayoutyerine kullanmak istersem FrameLayout?
alxscms

3
bir çerçeve düzeni içinde göreceli düzen kullanın.
Murtaza Khursheed Hussain

2
Mizanpajlardaki mizanpajları yerleştirme performans açısından benim için kesinlikle bir çözüm değil
alxscms

1
uygulama performansı değişiklik gösterebilecek birçok şeye bağlıdır. Eğer çıkış yolu yoksa denemelisin. En iyi şanslar
Murtaza Khursheed Hussain

Ne demek istediğini anlıyorum, ancak başka bir çözüm olmalı, eğer değilse, bu özel çerçeve düzeninde uygulanmış olan herhangi bir düzende uygulamanın bir yolu olabilir. Ama teşekkürler herhangi bir şekilde
alxscms

1

Gönderilen çözümlerin bazılarına benzer, ancak benim durumumda durum çubuğunu şeffaf yaptım ve eylem çubuğunun konumunu bir miktar negatif marjla sabitledim

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

Araç çubuğunda ve kök görünümde kullandım

android:fitsSystemWindows="true"

1
getStatusBarHeight () standart değildir
Roel

Bu yöntem @ mike-milla ... public int getStatusBarHeight () {int sonuç = 0; int resourceId = getResources (). getIdentifier ("status_bar_height", "dimen", "android"); if (resourceId> 0) {sonuç = getResources (). getDimensionPixelSize (resourceId); } sonuç; }
jegumi

Teşekkürler. Bunu yaptım: AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams (); lp.topMargin + = getStatusBarHeight ();
CoolMind

1

İyi kütüphane bulunmaktadır StatusBarUtil gelen @laobie yardım kolayca StatusBar resim çizmek için söyledi.

Sadece şunu ekleyin build.gradle:

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

Ardından Etkinlik kümesinde

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

Düzende

<?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>

Daha fazla bilgi için github sayfasından demo veya klon indirin ve tüm özelliklerle oynayın.

Not: KitKat ve üstünü destekleyin.

Umarım başka birine yardım eder!


0

Android Studio 1.4 ile, kazan plakası kodlu şablon projesi OverlayAppbarLayout ve / veya Araç Çubuğunuzda temayı ayarlar . Ayrıca, fitSystemWindowöznitelik = true ile durum çubuğunun arkasında oluşturulacak şekilde ayarlanır . Bu, yalnızca araç çubuğunun doğrudan durum çubuğunun altında oluşturulmasına ve diğer her şeyin araç çubuğunun altında oluşturulmasına neden olur. Dolayısıyla, yukarıda verilen çözümler kendi başlarına çalışmaz. Aşağıdaki değişiklikleri yapmanız gerekecektir.

  • Yerleşim temasını kaldırın veya araç çubuğu için yer paylaşımlı olmayan temayla değiştirin.
  • Aşağıdaki kodu styles-21.xml dosyanıza yerleştirin.

    @android: renkli / şeffaf

  • Bu temayı AndroidManifest.xml dosyasında gezinme çekmecesini içeren etkinliğe atayın .

Bu, Gezinme çekmecesinin saydam durum çubuğunun arkasında görüntülenmesini sağlayacaktır.


0

Tek yapmanız gereken bu özellikleri temanızda ayarlamak

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

1
Bunun, düzeninizin UI gezinme düğmelerinin (ekran navigasyonlu cihazlar) altına düşmesini sağlayacağından eminim. Bu, alt navigasyon görünümüne uygulamamızda erişilemedi, bu yüzden bir Nexus üzerinde test ettikten sonra bu bayrakları
attık

0

Kabul edilen cevap bir CollapsingToolbarLayout kullanarak benim için çalıştı. Yine de, setSytstemUiVisibility()bu işleve yapılan önceki çağrıları geçersiz kıldığını belirtmek önemlidir . Dolayısıyla, bu işlevi aynı görünüm için başka bir yerde kullanıyorsanız View.SYSTEM_UI_FLAG_LAYOUT_STABLEveView.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN bayraklarını , aksi takdirde yeni çağrı ile geçersiz kılınır.

Bu benim için böyleydi ve iki bayrağı aradığım diğer yere ekledikten sonra setSystemUiVisibility(), kabul edilen cevap mükemmel çalıştı.


0

Buraya biraz daha bilgi ekleyeceğim. En son Android geliştirmeleri, durum çubuğunda birçok vakanın üstesinden gelmeyi oldukça kolaylaştırdı. Aşağıdaki benim gözlemlerimdenstyles.xml

  1. Arka plan rengi : SDK 21+ için, bahsedilen birçok cevap olarak, <item name="android:windowTranslucentStatus">true</item> durum çubuğunu şeffaf hale getirecek ve kullanıcı arayüzünün önünde gösterecektir. Faaliyetiniz tepenin tüm alanını kaplayacaktır.
  2. Arka plan rengi : yine, SDK 21+ <item name="android:statusBarColor">@color/your_color</item>için, durum çubuğunuza başka bir şey etkilemeden bir renk verecektir.

  3. Ancak, sonraki cihazlarda (Android M / +), simgeler farklı tonlarda gelmeye başladı. İşletim sistemi, SDK 23 / + simgelerine daha koyu bir gri tonu verebilir, eğer styles.xmldosyanızı values-23klasörde geçersiz kılar ve eklerseniz <item name="android:windowLightStatusBar">true</item>.
    Bu şekilde, durum çubuğunuzda açık bir renk varsa, kullanıcıya daha görünür bir durum çubuğu sağlayacaksınız (Google uygulamalarının birçoğunun açık arka plana sahip olduğunu ancak simgelerin grimsi bir renkte nasıl göründüğünü düşünün).
    Durum çubuğunuza 2 numaralı noktadan renk veriyorsanız, bunu kullanmanızı öneririm

  4. En yeni cihazlarda, SDK 29 / +, kullanıcı tarafından kontrol edilebilen sistem çapında açık ve koyu bir tema ile birlikte gelir. Geliştirici olarak, values-nightkullanıcıya 2 farklı deneyim sunmak için stil dosyamızı yeni bir klasörde geçersiz kılmamız gerekiyor .
    Burada yine, "durum çubuğuna arka plan rengi" sağlamada # 2 noktasını etkili buldum. Ancak sistem, uygulamam için durum çubuğu simgelerinin rengini değiştirmiyordu. tarzı benim günlük versiyonu çakmak tema oluşuyordu beri, bu demektir kullanılabilir düşük görüş (hafif arka plan üzerinde beyaz ikonlar) muzdarip olacağı
    bu sorun noktası 3. yaklaşımı kullanarak veya stil dosyası geçersiz kılarak çözülebilir values-29klasörü ve daha yeni kullanılarak api <item name="android:enforceStatusBarContrast">true</item>. Arka plan renginiz çok açıksa, simgelerdeki grimsi renk tonunu otomatik olarak zorlar.


-1

İşte bunu gerçekleştirmek için kullandığım tema:

<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
Bazı garip inişli çıkışlılar var. Bir çözüm size ve başkalarına uygun olsa bile, başka bir cevaba geçmek yerine aşağı ineceklerdir.
CoolMind

Tek istediğim bir açıklama. İnsanların bir açıklama yapmadan aşağı düşebilmeleri gerektiğini sanmıyorum.
Droid Chris

Bende öyle düşünüyorum.
CoolMind

Arka plan seçeneğinin bu pakette doğru çalışmadığını açıklayacağım. Cevabınızı düzeltin lütfen.
Morozov

Hmmm ... bunu hangi Android sürümünde yapıyorsun? Bu yapılandırmayı Android M'de kullanıyorum
Droid Chris

-3

Doğru çözüm, Etkinlik etiketiniz altındaki XML'deki bir özelliği aşağıdaki stille değiştirmektir. Sadece çalışıyor

  android:theme="@style/Theme.AppCompat.Light.NoActionBar"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.