Färben Android Status Bar im Nav-Schublade

In dieser app, die ich Baue, ich habe ein Navigation Drawer-fragment in meine Tätigkeit. Ich bin mit 5.0, so habe ich in der Lage, die primaryColor und primaryColorDark, um die richtigen Farben. Ich habe beschlossen, zu versuchen und style meine Nav-Schublade sehr ähnlich wie Google Jetzt die Schublade in 5.0, wo der Nav Schublade hat Ihren eigenen hintergrund für die status bar. (Kann keine Bilder posten, nicht genug Ruf >.>)

Habe ich folgte dieser Frage Empfehlungen hier, die dazu beigetragen hat ein wenig Recht. Ich habe erreicht, zeichnen meine Nav-Schublade unter der Statusleiste, wenn ich ziehen Sie es heraus. Nur Problem ist, ich kann nicht herausfinden, wie man die Farbe der Statusleiste in meiner Schublade. Derzeit, es zeigt nur weiß.

Hier sind die relevanten bits für meine styles und code:

Aktivität Layout:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main"
    android:fitsSystemWindows="true">

    <!-- main content -->
    ...

    <!-- Drawer fragment -->
    <fragment
        android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:theme="@style/DrawerTheme"
        android:fitsSystemWindows="true"
        android:choiceMode="singleChoice"
        android:name="com.myname.appname.NavigationDrawerFragment"
        tools:layout="@layout/fragment_navigation_drawer" />

</android.support.v4.widget.DrawerLayout>

Fragment-Layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/navDrawerFragment"
    android:theme="@style/DrawerTheme"
    android:background="@color/WindowBackground"
    tools:context=".NavigationDrawerFragment"
    android:fitsSystemWindows="true">

     <!-- content here -->

</RelativeLayout>

Pro link oben, Einstellung Farbe meiner Statusleiste für die Aktivität (dieser Teil funktioniert nicht richtig):

public void onCreate(Bundled savedInstanceState) {
    super.onCreate(savedInstanceState);

    //....

    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, Gravity.START);
    drawerLayout.setStatusBarBackgroundColor(getResources().getColor(R.color.colorPrimaryDark));

    //....
}

Und schließlich, meine damit verbundenen Stile der Tätigkeit, und dem, was ich habe 'versucht' zu ordnen, um das fragment.

<style name="StatusBarActivityTheme" parent="MyAppTheme">
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>


<style name="DrawerTheme" parent="MyAppTheme">
    <item name="android:statusBarColor">#000000</item>
    <item name="android:colorPrimaryDark">#000000</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>

Vielen Dank im Voraus für jede Hilfe, die Sie senden können, auf meine Art! Ich vermute, dass mein Problem bezieht sich darauf, wie Google Nun der primäre Bildschirm hat eine transparente status-Leiste, und nur Farben, die es bei der Nav-Schublade, aber keine news zu das Gegenteil wäre toll!

  • R. Farbe.colorPrimaryDark auf eine Farbe den Wert Ihrer app-XML, nicht nur die android -: colorPrimaryDark Thema-Attribut. Was haben Sie definiert, @Farbe/colorPrimaryDark wie in deinen res Dateien?
  • Ich habe definiert, @Farbe/colorPrimaryDark, um eine hex-Farbe, kann nicht denken, es aus der Spitze von meinem Kopf. Dieser Teil der Arbeit - es ist richtig färben der Aktivität (drawerlayout s), die status-bar. Ich bin mehr besorgt über das fragment Schublade. (Ich wünschte WIRKLICH, ich könnte nach ein paar screencaps, aber dies ist mein Erster Beitrag...)
  • DrawerLayout.setStatusBarBackgroundColor() ist die richtige Methode aufrufen, um die Schublade status bar Farbe. Sie nicht benötigen, um ein spezielles Thema auf. Tut getResources().getColor(R. color.colorPrimaryDark) beheben weiß?
  • R. Farbe.colorPrimaryDark in colors.xml mit dieser Erklärung: <color name="colorPrimaryDark">#303f9f</color>. Es ist die Einstellung der status-bar-Farbe für die top-container in der Aktivität Layout - (activity_main.xml). Was nicht bunt ist, wird die Statusleiste Teil des fragments. Ich erkannte, dass ich kann verwenden imgur, also hier ist, wie es aussieht: imgur.com/5rbKnZb. Rechts ist der wesentliche Inhalt und die Links der nav-fragment-Schublade.
  • Oh, das ist auch der Effekt von Google Jetzt, dass ich versuche zu erreichen. Wieder, verlassen ist der Nav-Schublade, und rechts ist der Inhalt. imgur.com/gC4s0YB
InformationsquelleAutor Andrew | 2014-10-25
Schreibe einen Kommentar