Skip to content Skip to sidebar Skip to footer

Android Toolbar Overflow Menu Change Text Color And Fill Menu To The Screen

there I facing problem to change the text colour of toolbar/action bar overflow menu item. I do too many googling and reading Stackoverflow answers but it can not solve my prblem

Solution 1:

finally i got the code for the convert black colour to white

publicbooleanonPrepareOptionsMenu(Menu menu) {
    //return super.onPrepareOptionsMenu(menu);try {
        for (inti=0; i < menu.size(); i++) {
            MenuItemmi= menu.getItem(i);
            mi.setIcon(R.drawable.ic_action_new);
            Stringtitle= mi.getTitle().toString();
            Spannablespannable=newSpannableString(title);
            spannable.setSpan(newForegroundColorSpan(Color.WHITE), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            mi.setTitle(spannable);
        }
    } catch (Exception ex) {

    }
    returntrue;
}

Solution 2:

A more flexible but less preferred way would be using PopupWindow

example MainActivity.java package com.chiragjn.stackovefflowing;

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

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;

publicclassMainActivityextendsActionBarActivity {

    StringTAG="MainActivity.java";
    String popUpContents[];
    PopupWindow popupWindow;
    private Toolbar mToolbar;
    @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mToolbar = (Toolbar) findViewById(R.id.toolbar);

        setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

        List<String> itemsList = newArrayList<String>();
        itemsList.add("Option 1");
        itemsList.add("Option 2");
        itemsList.add("Option 3");
        itemsList.add("Option 4");
        popUpContents = newString[itemsList.size()];
        itemsList.toArray(popUpContents);
        popupWindow = popupWindow();
    }

    public PopupWindow popupWindow() {

        PopupWindowpopupWindow=newPopupWindow(this);
        ListViewlistView=newListView(this);
        listView.setAdapter(dogsAdapter(popUpContents));
        popupWindow.setFocusable(true);
        popupWindow.setWidth(WindowManager.LayoutParams.MATCH_PARENT);
        popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
        popupWindow.setContentView(listView);
        return popupWindow;
    }

    private ArrayAdapter<String> dogsAdapter(String dogsArray[]) {

        ArrayAdapter<String> adapter = newArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dogsArray) {

            @Overridepublic View getView(int position, View convertView, ViewGroup parent) {

                Stringitem= getItem(position);
                Stringtext= item;


                TextViewlistItem=newTextView(MainActivity.this);

                listItem.setText(text);
                listItem.setTextSize(22);
                listItem.setPadding(10, 10, 10, 10);
                listItem.setTextColor(Color.WHITE);
                switch(position)
                {
                    case0:
                        listItem.setBackgroundColor(Color.BLUE);
                        break;
                    case1:
                        listItem.setBackgroundColor(Color.GREEN);
                        break;
                    case2:
                        listItem.setBackgroundColor(Color.YELLOW);
                        break;
                    case3:
                        listItem.setBackgroundColor(Color.RED);
                        break;
                    default:
                    break;
                }
                return listItem;
            }
        };

        return adapter;
    }

    @OverridepublicbooleanonOptionsItemSelected(MenuItem item) {
        // Handle item selectionswitch (item.getItemId()) {
        case R.id.action_options:
            Viewv= findViewById(R.id.action_options);
            popupWindow.showAsDropDown(v, 0, 0);
            returntrue;
        default:
            returnsuper.onOptionsItemSelected(item);
        }
    }


    @OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action barMenuInflaterinflater= getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        returnsuper.onCreateOptionsMenu(menu);
    }
}

main.xml

<menuxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"tools:context="com.chiragjn.stackovefflowing.MainActivity" ><itemandroid:id="@+id/action_options"android:icon="@android:drawable/ic_menu_more"android:title="Overflow Menu"app:showAsAction="always"  /></menu>

You can then inflate your favourite Layout in ListView and implement the ListView onItemClickListner()

Post a Comment for "Android Toolbar Overflow Menu Change Text Color And Fill Menu To The Screen"