首页 > 解决方案 > Android 选项菜单是白色的

问题描述

面临我的选项菜单保持白色的问题。我查看了文档,并不能真正看到我做错了什么。很高兴看到我的代码的另一个观点。谢谢。问题是创建的菜单完全是白色的,文本通常是黑色的。但是,我可以单击菜单选项并且它可以正常工作。

这是一个屏幕截图:

菜单截图

main_menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/log_out_btn"
        android:title="Log out" />

    <item
        android:id="@+id/settings_btn"
        android:title="Account settings" />

    <item
        android:id="@+id/all_users_btn"
        android:title="All users" />

</menu>

我的主要活动:

package com.david.MyCampusChat;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;

import android.app.DownloadManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import com.devin.MyCampusChat.Fragments.ChatsFragment;
import com.devin.MyCampusChat.Fragments.FriendsFragment;
import com.devin.MyCampusChat.Fragments.RequestsFragment;
import com.google.android.material.tabs.TabLayout;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private FirebaseAuth fAuth;
    private FirebaseUser fUser;
    private Toolbar mToolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

    //Fragments.
    private ChatsFragment chatsFragment;
    private FriendsFragment friendsFragment;
    private RequestsFragment requestsFragment;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tabLayout  = findViewById(R.id.tab_layout);
        viewPager  = findViewById(R.id.view_pager);
        fAuth      = FirebaseAuth.getInstance();
        mToolbar   = findViewById(R.id.toolbar);

        //fragments
        chatsFragment    = new ChatsFragment();
        friendsFragment  = new FriendsFragment();
        requestsFragment = new RequestsFragment();

        setSupportActionBar(mToolbar);
        getSupportActionBar().setTitle("MyCampus Chats");

        tabLayout.setupWithViewPager(viewPager);

        ViewPagerAdapter viewPagerAdapter = new MainActivity.ViewPagerAdapter(getSupportFragmentManager(), 0);
        viewPagerAdapter.addFragment(chatsFragment, "Chats");
        viewPagerAdapter.addFragment(friendsFragment, "Friends");
        viewPagerAdapter.addFragment(requestsFragment, "Requests");
        viewPager.setAdapter(viewPagerAdapter);

    }

    @Override
    public void onStart() {
        super.onStart();
        fUser = fAuth.getCurrentUser();

        //Check to see if the current user is null or not, if so, they are not logged in.
        if(fUser == null){
            Intent startIntent = new Intent(MainActivity.this, StartActivity.class);
            startActivity(startIntent);
            finish();
        }
    }

    /** Creates the options menu **/
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }

    /** Gets the options selected from the menu resource **/
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
         super.onOptionsItemSelected(item);

            switch(item.getItemId()) {
                case R.id.log_out_btn:
                    fAuth.signOut();
                    sendToStart();

                    break;
                case R.id.all_users_btn:
                case R.id.settings_btn:
            }

         return true;
    }

    /** Simply sends the user to the startActivity (state not logged in) **/
    private void sendToStart(){
        Intent intent = new Intent(MainActivity.this, StartActivity.class);
        startActivity(intent);
        finish();
    }

    public class ViewPagerAdapter extends FragmentPagerAdapter {

        private List<Fragment> mFragments = new ArrayList<>();
        private List<String>   fragmentTitles = new ArrayList<>();


        public ViewPagerAdapter(@NonNull FragmentManager fm, int behavior) {
            super(fm, behavior);
        }

        public void addFragment(Fragment fragment, String title){
            mFragments.add(fragment);
            fragmentTitles.add(title);
        }

        @NonNull
        @Override
        public Fragment getItem(int position) {
            return mFragments.get(position);
        }

        @Override
        public int getCount() {
            return mFragments.size();
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return fragmentTitles.get(position);
        }
    }
}

谢谢

标签: androidandroid-layoutandroid-menu

解决方案


将以下行添加到您的主题中styles.xml

<item name="android:actionMenuTextColor">@color/your_color</item>

your_color -> 无论您选择什么颜色color.xml


推荐阅读