Tôi đang cố gắng thêm chủ đề ban đêm cho ứng dụng của mình và tôi đã lãng phí gần ba giờ chỉ để cố gắng làm cho văn bản và biểu tượng trong ngăn điều hướng của tôi chuyển sang màu trắng cùng với nền tối. Đây là cách tôi đang cố gắng thực hiện điều này onCreate()
trong 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);
}
Các nightMode
boolean là không thích hợp vì nó hoạt động. Khi chế độ ban đêm được đặt thành (0), bất kỳ mục menu nào được chọn trong ngăn điều hướng sẽ chuyển sang màu trắng. Tuy nhiên, điều đó chỉ xảy ra khi chọn từng mục rõ ràng là bất tiện. Đây là draw_dark.xml của tôi:
<?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>
Tôi đang sử dụng các biểu tượng màu trắng trên nền trong suốt cho từng mục, nhưng chúng hiển thị dưới dạng màu đen trên nền đen của ngăn điều hướng. Tôi đã thử tìm kiếm giải pháp xml để thay đổi màu sắc của văn bản và tôi đang vò đầu bứt tai vì không biết tại sao điều này lại bị bỏ qua.
Ai đó có thể cung cấp cho tôi một giải pháp năng động để đạt được những gì tôi đang cố gắng đạt được không? Tất cả sự giúp đỡ được đánh giá cao, cảm ơn bạn!
CHỈNH SỬA: Tôi không sử dụng thư viện của bên thứ ba, đó là NavigationView được cung cấp trong thư viện hỗ trợ. Đây là bố cục 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
thànhDark
và ngược lại ..