Android: adding text color,background and font size to optionsmenu

烈酒焚心 提交于 2019-12-08 07:33:33

问题


I tried a lot to add the font size,text color and background for my options menu but couldn't able to solve, how to do this for the following code?Help is always appreciated.....!, Thanks.

 @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            super.onCreateOptionsMenu(menu);

        menu.add("Share In Heart Club!");
        menu.add("Play");
        menu.add("Check Your Heart Type?");
        menu.add("Cancel");


        // Return true so that the menu gets displayed.
        return true;
    }

     @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            // Close the menu after a period of time.
            // Note that this STARTS the timer when the options menu is being
            // prepared, NOT when the menu is made visible.
            Timer timing = new Timer();
            timing.schedule(new TimerTask() {

                @Override
                public void run() {
                    closeOptionsMenu();
                }
            }, 10000);
            return super.onPrepareOptionsMenu(menu);
        }

回答1:


Try the following code

@Override
        public boolean onCreateOptionsMenu(android.view.Menu menu) {
            // MenuInflater inflater = getMenuInflater();
            // inflater.inflate(R.menu.menu, menu);
            // setContentView(R.layout.menu);
            menu.clear();
            setMenuBackground();
            menu.add(0, MobilePagesConstant.MenuConstant.MENU_ABOUT, 0,
                    R.string.menu_about).setIcon(R.drawable.ico_about);

            menu.add(0, MobilePagesConstant.MenuConstant.MENU_INDEX, 1,
                    R.string.menu_index).setIcon(R.drawable.ico_help);

            // if (HNHConstant.IS_LAST_LIST_ON == 1) {
            menu.add(0, MobilePagesConstant.MenuConstant.MENU_CUSTOMER_SUPPORT, 2,
                    R.string.menu_customer_support).setIcon(
                    R.drawable.ico_customer_support);

            menu.add(0, MobilePagesConstant.MenuConstant.MENU_LEGAL, 3,
                    R.string.menu_legal).setIcon(R.drawable.ico_moderate);
            menu.add(0, MobilePagesConstant.MenuConstant.MENU_GETTING_STARTED, 0,
                    R.string.menu_getting_started).setIcon(
                    R.drawable.ico_gettingstarted);

            return true;

        }





 private void setMenuBackground() {
            // TODO Auto-generated method stub
            getLayoutInflater().setFactory(new Factory() {

                @Override
                public View onCreateView(final String name, final Context context,
                        final AttributeSet attrs) {

                    if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {

                        try { // Ask our inflater to create the view
                            final LayoutInflater f = getLayoutInflater();
                            final View[] view = new View[1];
                            try {
                                view[0] = f.createView(name, null, attrs);
                            } catch (InflateException e) {
                                chaneDeafultMenu(name, attrs, f, view);
                            }
                            // Kind of apply our own background
                            new Handler().post(new Runnable() {
                                @Override
                                public void run() {

                                    view[0].setBackgroundResource(R.drawable.background);
                                    ((TextView) view[0]).setTextColor(Color.BLACK);
                                    ((TextView) view[0])
                                            .setTypeface(Typeface.SANS_SERIF);
                                }
                            });
                            return view[0];
                        } catch (InflateException e) {
                        } catch (ClassNotFoundException e) {

                        }
                    }
                    return null;
                }
            });
        }

        static void chaneDeafultMenu(final String name,
                final android.util.AttributeSet attrs, final LayoutInflater f,
                final View[] view) {
            // mConstructorArgs[0] is only non-null during a running call to
            // inflate()
            // so we make a call to inflate() and inside that call our dully
            // XmlPullParser get's called
            // and inside that it will work to call
            // "f.createView( name, null, attrs );"!
            try {
                f.inflate(new XmlPullParser() {
                    @Override
                    public int next() throws XmlPullParserException, IOException {
                        try {
                            view[0] = f.createView(name, null, attrs);
                        } catch (InflateException e) {
                        } catch (ClassNotFoundException e) {
                        }
                        throw new XmlPullParserException("exit");
                    }

                    @Override
                    public void defineEntityReplacementText(String arg0, String arg1)
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public int getAttributeCount() {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public String getAttributeName(int arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getAttributeNamespace(int arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getAttributePrefix(int arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getAttributeType(int arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getAttributeValue(int arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getAttributeValue(String arg0, String arg1) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public int getColumnNumber() {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public int getDepth() {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public int getEventType() throws XmlPullParserException {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public boolean getFeature(String arg0) {
                        // TODO Auto-generated method stub
                        return false;
                    }

                    @Override
                    public String getInputEncoding() {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public int getLineNumber() {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public String getName() {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getNamespace() {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getNamespace(String arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public int getNamespaceCount(int arg0)
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public String getNamespacePrefix(int arg0)
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getNamespaceUri(int arg0)
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getPositionDescription() {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getPrefix() {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public Object getProperty(String arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public String getText() {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public char[] getTextCharacters(int[] arg0) {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public boolean isAttributeDefault(int arg0) {
                        // TODO Auto-generated method stub
                        return false;
                    }

                    @Override
                    public boolean isEmptyElementTag()
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub
                        return false;
                    }

                    @Override
                    public boolean isWhitespace() throws XmlPullParserException {
                        // TODO Auto-generated method stub
                        return false;
                    }

                    @Override
                    public int nextTag() throws XmlPullParserException, IOException {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public String nextText() throws XmlPullParserException,
                            IOException {
                        // TODO Auto-generated method stub
                        return null;
                    }

                    @Override
                    public int nextToken() throws XmlPullParserException,
                            IOException {
                        // TODO Auto-generated method stub
                        return 0;
                    }

                    @Override
                    public void require(int arg0, String arg1, String arg2)
                            throws XmlPullParserException, IOException {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void setFeature(String arg0, boolean arg1)
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void setInput(Reader arg0) throws XmlPullParserException {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void setInput(InputStream arg0, String arg1)
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void setProperty(String arg0, Object arg1)
                            throws XmlPullParserException {
                        // TODO Auto-generated method stub

                    }
                }, null, false);
            } catch (InflateException e1) {
                // "exit" ignored
            }
        }



回答2:


http://www.droidnova.com/how-to-create-an-option-menu,427.html Please check the link and vote up if u find it useful




回答3:


Applying styles / themes to the options menu is not easy in Android. However, there is a great article which shows you how to implement your own.

Setting the background colour is possible, but it's quite buggy on 2.3. See How to change the background color of the options menu? for more information.




回答4:


Create a custom xml view with your fav icons and colors. Use menuinflator to inflate them to options menu.




回答5:


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    // getMenuInflater().inflate(R.menu.splash_screen, menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.payby_menu, menu);
    getLayoutInflater().setFactory(new Factory() {

        @Override
        public View onCreateView(String name, Context context,
                AttributeSet attrs) {

            if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView")) {
                try {
                    LayoutInflater f = getLayoutInflater();
                    final View view = f.createView(name, null, attrs);
                    new Handler().post(new Runnable() {
                        public void run() {
                            // set the background drawable
                            // view.setBackgroundResource(R.drawable.my_ac_menu_background);
                            // set the text color
                            ((TextView) view).setTextColor(Color.WHITE);
                        }
                    });
                    return view;
                } catch (InflateException e) {
                } catch (ClassNotFoundException e) {
                }
            }
            return null;

        }
    });
    return super.onCreateOptionsMenu(menu);
}



回答6:


1: you can simply add color to text by just writing android:textColor="#ff00ff" in your layout xml in textview tag

or second method is

you can add color by using values->string.xml and adding a color resource to your string



来源:https://stackoverflow.com/questions/6223846/android-adding-text-color-background-and-font-size-to-optionsmenu

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!