Ich versuche, ein Nachtthema für meine App hinzuzufügen, und habe fast drei Stunden vergeudet, während Text und Symbole in meiner Navigationsleiste mit der Dunkelheit weiß werden Hintergrund. Hier ist die Art, wie ich über das tun dies in onCreate()
in MainActivity.java
zu gehen bin versucht:Ändern der Textfarbe des Menüelements in der Navigationsleiste
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger onItemClick of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
// Checking if the item is in checked state or not, if not make it in checked state
if (menuItem.isChecked())
menuItem.setChecked(false);
else menuItem.setChecked(true);
if (nightMode == 0) {
SpannableString spanString = new SpannableString(menuItem.getTitle().toString());
spanString.setSpan(new ForegroundColorSpan(Color.WHITE), 0, spanString.length(), 0); // fix the color to white
menuItem.setTitle(spanString);
}
Die nightMode
boolean ist irrelevant, weil es funktioniert. Wenn der Nachtmodus aktiviert ist (0), wird der in der Navigationsleiste ausgewählte Menüeintrag weiß. Dies geschieht jedoch nur dann, wenn jedes Element ausgewählt wird, was offensichtlich unbequem ist. Hier ist mein drawer_dark.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:checkableBehavior="single">
<item
android:id="@+id/unitone"
android:checked="true"
android:icon="@drawable/one_white"
android:title="Classical Period" />
<item
android:id="@+id/unittwo"
android:checked="false"
android:icon="@drawable/two_white"
android:title="Postclassical Period" />
<item
android:id="@+id/unitthree"
android:checked="false"
android:icon="@drawable/three_white"
android:title="Early Modern Era" />
<item
android:id="@+id/unitfour"
android:checked="false"
android:icon="@drawable/four_white"
android:title="Dawn of Industrial Age" />
<item
android:id="@+id/unitfive"
android:checked="false"
android:icon="@drawable/five_white"
android:title="Modern Era" />
</group>
</menu>
Ich weiß Icons für jedes Element auf einen transparenten Hintergrund bin mit, aber sie zeigen sich als schwarz auf dem schwarzen Hintergrund der Navigationsleiste. Ich habe versucht, nach einer xml-Lösung zu suchen, um die Farbe des Textes zu ändern, und ich kratze mich am Kopf, weil ich nicht weiß, warum das übersehen wurde.
Kann mir jemand eine dynamische Lösung anbieten, um das zu erreichen, was ich erreichen möchte? Alle Hilfe wird geschätzt, danke!
EDIT: Ich verwende keine Drittanbieter-Bibliothek, es ist die NavigationView in der Support-Bibliothek zur Verfügung gestellt. Hier ist das XML-Layout:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="7dp"
tools:context=".MainActivity"
android:fitsSystemWindows="true" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/ColorDark" />
<include layout="@layout/toolbar" />
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:background="#000"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>
warum gehst du nicht Ändere einfach das Aktivitätsthema von "Light" in "Dark" und umgekehrt. – Emil
@Boss Mit der Art wie meine App programmiert ist, wäre es ein langwieriger Prozess. Ich habe dieses Tag/Nacht-Thema perfekt überall sonst außer meiner Navigationsschublade, so dass alles, was ich brauche, eine Lösung dafür ist. – wasimsandhu