Android选项菜单为白色

问题描述

解决了我的选项菜单保持白色的问题。我看了看文档,看不到我在做什么错。很高兴看到我的代码的另一种观点。谢谢。问题在于创建的菜单完全为白色,文本通常为黑色。我可以单击菜单选项,但是它可以正常工作。

这是屏幕截图:

Screenshot of menu

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>

我的MainActivity:

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);
        }
    }
}

谢谢

解决方法

styles.xml的主题中添加以下行:

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

您的颜色->从color.xml

中选择的颜色