Android: Status Bar er Hvid

For nogle grund, status bar er nu hvide. Eller rettere, en off white, med en anden nuance af hvid for ikonerne, der svagt anes mod den lyse baggrund. Der er forkert, fordi min appbarlayout bruger en blå nuance, som dens farve. Indtil nu har det fungeret fint, jeg ved ikke, hvad jeg gjorde for at forårsage dette. Jeg har prøvet manuelt at indstille statusBarColor at colorPrimaryDark (#0277bd), men det er ikke i orden.

Jeg ved bare ikke hvorfor dette sker i første omgang. Jeg indsætter min aktivitet er layout.xml måske kan nogen anelse om mig i, hvad jeg gør galt her.

Et par bemærkninger:

De temaer, der anvendes ikke har været ændret fra deres standarder, der er for at bruge de primære farve indstillinger. Jeg har ændret dem til den rigtige nuance af blå, at jeg ville, men når jeg gjorde det ændre alt var i orden.

Min 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

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

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

Edit: Ok, har fundet en interessant løsning, der virkelig ønsker at forstå det, ikke bare stole på det. Også, det kan ikke være det bedste svar på lang sigt.

Alligevel, at den base ansøgning tema (AppTheme) styles.xml jeg har tilføjet følgende linje:

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

Det virkede, det gjorde baggrund af alt det, jeg ikke specielt tildele en farve, denne farve. Men det gjorde også status bar denne farve, så jeg gik igennem, og tilføjet min egen baggrund for at andre ting at ordne dem.

Jeg føler, at dette ikke er den ideelle løsning, selv om, og ville bare gerne have mere feedback i almindelighed. Også, selv uden denne linje før, det var farvelægning statuslinjen fint. Jeg har ingen idé om, hvad jeg gjorde for at bryde det i første omgang.

Tak.

Edit: Her er den aktivitet kode. Tak.

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);
    }
}
Bare nysgerrig. Din Aktivitet strækker sig AppCompatActivity, højre?
Kan du sende din Manifest og Aktivitet kode for? Også, bør du fjerne android:statusBarColor="@color/colorPrimaryDark" fra dit layout xml.
android:fitsSystemWindows="true" er mistænkelige. Det anvendes til tegning af den Aktivitet eller komponenter, der under statuslinjen, som er udfærdiget i kombination med en gennemsigtig statusbar. Hvis du har kopieret dele af koden fra et sted, du måske er gået glip af noget, der er årsag til dit problem. Så, som jeg sagde, bedes du sende din Aktivitet-kode, eller i det mindste bare de dele, du synes er relevante.
tilføjet koden. tak.

OriginalForfatteren user2223059 | 2016-01-24

6 svar

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

    Du vil se, at linje af kode i values/styles/styles.xml(v21) . Fjern det, og som løser problemet

    OriginalForfatteren Idee

  2. 7

    Kan du opnå ved dette.
    Gå til din style.xml(v21) og bare ændre farven

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

    Jeg håber, at dette vil løse dit problem.

    hvis der virkede for dig, så marker det korrekte, således at det kan hjælpe andre også.

    OriginalForfatteren Hakim Khan

  3. 2

    Prøv denne som din 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: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>

    Jeg tror, du kan have valgt, at temaet flere gange og dets forvirrende i sig selv.

    Hvis alt er gjort rigtigt, Status bar får sin farve fra colorPrimaryDark.

    OriginalForfatteren eoinzy

  4. 1

    I styles.xml,

    Erstatte denne:

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

    med:

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

    Og gøre respektive ændringer i Manifest.xml

    OriginalForfatteren ParthHingorani

  5. 1

    Jeg kan ikke sige, at jeg har set på dette i detaljer, men ingen af de andre svar har foreslået, “windowDrawsSystemBarBackgrounds” – som ser ud til at virke, uden at du behøver at angive status bar farver eksplicit. Således, values-v21/styles.xml:

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

    OriginalForfatteren mayfly

  6. 0

    Jeg havde på netop dette problem.
    Jeg rettede det ved at ændre app tema for at udvide NoActionBar AppCompat-style:

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

    Min aktivitet layout er:

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

    Hvor RelativeLayout har et Fragment, som bare har en RecyclerView inde i en RelativeLayout. Så tag android:statusBarColor=”@farve/colorPrimaryDark” og fitSystemWindow xml linjer og ændring af dit tema, og jeg tror, det bør arbejde.

    OriginalForfatteren ryanjohn

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *