In dieser App, die ich baue, habe ich ein Navigations-Schublade-Fragment in meine Tätigkeit aufgenommen. Ich benutze 5.0, also konnte ich primaryColor und primaryColorDark setzen, um die richtigen Farben zu erhalten. Ich habe mich entschieden, meine Nav-Schublade so zu gestalten, dass sie der Schublade von Google Now in 5.0 sehr ähnlich ist, wo die Nav-Schublade ihren eigenen Hintergrund für die Statusleiste hat. (Kann nicht Bilder posten, nicht genug Ruf>.>)Coloring Android Statusleiste in Nav-Schublade
Ich habe die Empfehlungen dieser Frage here gefolgt, die ziemlich geholfen hat. Ich habe es geschafft, mein Nav Drawer unter der Statusleiste zu zeichnen, wenn ich es herausziehe. Nur Ärger ist, ich kann nicht herausfinden, wie die Farbe der Statusleiste eingestellt wird, die in meiner Schublade angezeigt wird. Derzeit wird nur Weiß angezeigt.
Hier sind die entsprechenden Bits meines Designs 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>
Per Link oben, Farbe meiner Statusleiste Einstellung für die Aktivität (dieser Teil funktioniert ordnungsgemäß):
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 zugehörigen Stile für die Aktivität, und was ich 'versucht' habe, um das Fragment zuzuordnen.
<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 mir schicken können! Ich vermute, dass mein Problem damit zu tun hat, dass der Hauptbildschirm von Google Now über eine transparente Statusleiste verfügt und diese nur während der Nav-Schublade einfärbt, aber jede gegenteilige Nachricht wäre großartig!
R.color.colorPrimaryDark referenziert einen Farbwert aus Ihrer App-XML, nicht das android: colorPrimaryDark-Designattribut. Was haben Sie @ color/colorPrimaryDark wie in Ihren res-Dateien definiert? – alanv
Ich habe @ color/colorPrimaryDark auf eine Hex-Farbe festgelegt, kann mir nicht vorstellen, es von der Spitze meines Kopfes. Dieser Teil funktioniert - es färbt die Statusleiste der Aktivität (Schublade) korrekt ein. Ich mache mir mehr Sorgen um die Fragmentschublade. (Ich wünschte wirklich, ich könnte einige Screencaps posten, aber das ist mein erster Beitrag ...) – Andrew
DrawerLayout.setStatusBarBackgroundColor() ist der richtige Methodenaufruf, um die Farbe der Statusleiste der Schublade festzulegen. Sie müssen kein spezielles Thema festlegen. Wird getResources(). GetColor (R.color.colorPrimaryDark) in Weiß aufgelöst? – alanv