Saya mencoba menambahkan tema malam untuk aplikasi saya dan saya telah menyia-nyiakan hampir tiga jam hanya untuk mencoba membuat teks dan ikon di laci navigasi saya menjadi putih bersama dengan latar belakang gelap. Inilah cara saya mencoba melakukan ini onCreate()
di MainActivity.java
:
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);
}
The nightMode
boolean tidak relevan karena ia bekerja. Saat mode malam disetel ke aktif (0), item menu apa pun yang dipilih di panel samping navigasi berubah menjadi putih. Namun, itu hanya terjadi ketika setiap item dipilih yang jelas tidak nyaman. Ini drawer_dark.xml saya:
<?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>
Saya menggunakan ikon putih pada latar belakang transparan untuk setiap item, namun ikon tersebut muncul sebagai hitam pada latar belakang hitam panel samping navigasi. Saya telah mencoba mencari solusi xml untuk mengubah warna teks dan saya menggaruk-garuk kepala karena saya tidak tahu mengapa hal ini terlewatkan.
Dapatkah seseorang menawarkan solusi dinamis untuk mendapatkan apa yang ingin saya capai? Semua bantuan dihargai, terima kasih!
EDIT: Saya tidak menggunakan pustaka pihak ketiga, ini adalah NavigationView yang disediakan di pustaka dukungan. Berikut tata letak XML:
<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>
Light
menjadiDark
dan sebaliknya ..