2016-01-24 30 views
11

Bazı nedenlerden dolayı durum çubuğu artık beyazdır. Ya da, parlak bir arka plana karşı zayıf bir şekilde görünen ikonlar için beyazın başka bir tonuyla beyaz. Bu yanlış, çünkü benim appbarlayout rengi olarak mavi bir gölge kullanıyor. Şimdiye kadar, bu iyi çalışıyor, buna neden sebep olduğumu bilmiyorum. StatusBarColor öğesini colorPrimaryDark (# 0277bd) olarak ayarlamayı denedim, ancak çalışmıyor.Android: Durum Çubuğu Beyazdır

Sadece bunun neden ilk başta olduğunu bilmiyorum. Etkinliğimin layout.xml'sini yapıştırabilirim, belki de birisi burada yanlış yaptığım şey hakkında beni bilgilendirebilir.

birkaç not: Kullanılan

temalar ana renk ayarlarını kullanmak için vardır varsayılan gelen değiştirilmedi. Bunları istediğim doğru mavi gölgeye dönüştürdüm, ama yaptığım her şey değişiyordu.

Benim Layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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:statusBarColor="@color/colorPrimaryDark" 
    tools:context=".activities.ContactsActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/contactsActivityAppbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:fitsSystemWindows="true" 
     android:statusBarColor="@color/colorPrimaryDark" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/contactsActivityToolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/AppTheme.PopupOverlay"/> 
     <!-- app:layout_scrollFlags="scroll|enterAlways" --> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/contactsActivityTabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabIndicatorColor="@android:color/white" 
      android:scrollbarStyle="insideOverlay" 
      android:paddingBottom="1dp" 
      android:background="@color/colorPrimary"/> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/contactsTabsViewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

</android.support.design.widget.CoordinatorLayout> 

colors.xml

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 

    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

</resources> 

Düzenleme

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="colorPrimary">#0288d1</color> 
    <color name="colorPrimaryDark">#0277bd</color> 
    <color name="colorAccent">#FF4081</color> 
</resources> 

styles.xml: Tamam, ilginç bir çözüm buldu, gerçekten anlamak istiyorum, sadece ona güvenmek değil. Ayrıca, uzun vadede en iyi cevap olmayabilir. İşe yaradı

<item name="android:windowBackground">@color/colorPrimaryDark</item> 

, ben özellikle bir renk atamadı her şeyin arka planını yaptı:

Neyse, styles.xml taban uygulaması tema (AppTheme) için, aşağıdaki satırı eklendi bu renk Ama aynı zamanda durum çubuğunu o renk haline getirdi, ben de geçtim ve onları düzeltmek için kendi arka planımı başka şeylere ekledim.

Bunun iyi bir çözüm olmadığını düşünüyorum ve genel olarak daha fazla geri bildirim istiyorum. Ayrıca, daha önce bu satır olmasa bile, durum çubuğunun iyi bir şekilde renklendirilmesiydi. İlk etapta ne kırdığımı bilmiyorum.

Teşekkürler.

Düzenleme: İşte aktivite kodu. Teşekkürler.

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.TabLayout; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 

import io.craigmiller160.contacts5.R; 
import io.craigmiller160.contacts5.fragments.ContactsGroupsFragmentPage; 
import io.craigmiller160.contacts5.fragments.ContactsListFragmentPage; 
import io.craigmiller160.contacts5.fragments.ContactsTabsPagerAdapter; 

public class ContactsActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_contacts); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.contactsActivityToolbar); 
     setSupportActionBar(toolbar); 

     ViewPager viewPager = (ViewPager) findViewById(R.id.contactsTabsViewPager); 

     ContactsTabsPagerAdapter adapter = new ContactsTabsPagerAdapter(getSupportFragmentManager()); 
     adapter.addFragmentPage(new ContactsListFragmentPage(), "Contacts"); 
     adapter.addFragmentPage(new ContactsGroupsFragmentPage(), "Groups"); 
     viewPager.setAdapter(adapter); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.contactsActivityTabs); 
     tabLayout.setupWithViewPager(viewPager); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.displaySettings) { 
      Intent intent = new Intent(this, DisplaySettingsActivity.class); 
      startActivity(intent); 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Sadece merak ediyorum. Faaliyetiniz AppCompatActivity'yi uzatır, değil mi? – DavidH

+0

Manifest ve Etkinlik kodunuzu da gönderebilir misiniz? Ayrıca, düzeninizi xml 'android: statusBarColor = "@ color/colorPrimaryDark" 'kaldırmalısınız. – DavidH

+0

'android: fitsSystemWindows =" true "' şüpheli. Etkinlik veya bileşenlerin durum çubuğunun altında çizilmesi, şeffaf bir durum çubuğuyla birlikte kullanılması için kullanılır. Kodun bazı bölümlerini bir yerden kopyaladıysanız, sorununuza neden olan bir şeyi kaçırmış olabilirsiniz. Yani, dediğim gibi, lütfen Aktivite kodunuzu veya en azından sadece alakalı olduğunu düşündüğünüz parçaları gönderin. – DavidH

cevap

2

Bunu XML'iniz olarak deneyin.

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true" 
    tools:context=".activities.ContactsActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/contactsActivityAppbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/contactsActivityToolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/contactsActivityTabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabIndicatorColor="@android:color/white" 
      android:scrollbarStyle="insideOverlay" 
      android:paddingBottom="1dp" 
      android:background="?attr/colorPrimary"/> 

    </android.support.design.widget.AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/contactsTabsViewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

</android.support.design.widget.CoordinatorLayout> 

Temayı birden çok kez ayarlayabileceğinizi ve kafasını karıştırdığını düşünüyorum.

Her şey doğru yapılırsa, Status çubuğu rengi colorPrimaryDark'dan alır.

0

Tam olarak bu sorunu yaşadım.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
    <item name="android:windowBackground">@color/alabaster</item> 
</style> 

Benim aktivite düzenidir:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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" 
tools:ignore="MergeRootFrame"> 

<android.widget.RelativeLayout 
    android:id="@+id/chat_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appbar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways|snap" 
     app:popupTheme="@style/AppTheme.PopupOverlay"> 

    </android.support.v7.widget.Toolbar> 
</android.support.design.widget.AppBarLayout> 

RelativeLayout sadece RecyclerView olan bir Fragment tutan ben NoActionBar AppCompat tarzını uzatmak için uygulama temasını değiştirerek düzelttim RelativeLayout içinde. Yani android: statusBarColor = "@ color/colorPrimaryDark" ve fitSystemWindow xml satırlarını kaldırın ve temanızı değiştirin ve bunun işe yarayacağını düşünüyorum.

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

Sen values/styles/styles.xml(v21) kod satırını göreceksiniz. Kaldırma ve bu sorunu çözer. Bu,

3

Bu sorunu çözebilirsiniz. Ben Bu sorununuzu çözecektir umut senin style.xml (V21) gidin ve sadece renk

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

değiştirin.

+0

, sizin için işe yararsa, başkalarına da yardımcı olabilmesi için doğru şekilde işaretleyin. –

1

Ben herhangi ayrıntılı olarak bu içine baktım, ancak diğer cevapların hiçbiri "windowDrawsSystemBarBackgrounds" ileri sürmüşlerdir söyleyemeyiz - Açıkça durum çubuğu renkleri ayarlamak gerek kalmadan çalışıyor gibi görünüyor. Böylece, değerler-V21/styles.xml:

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

ile:

<style name="NoActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

Ve, ilgili değişiklikler yapmak styles.xml olarak

<resources> 
    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
    </style> 
</resources> 
İlgili konular