Android:为optionsmenu添加文本颜色,背景和字体大小

时间:2011-06-03 06:42:38

标签: android font-size options-menu textcolor

我尝试了很多为font size添加text colorbackgroundoptions menu但无法解决,如何为以下代码执行此操作?总是感谢帮助.....!,谢谢。

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

6 个答案:

答案 0 :(得分:2)

尝试以下代码

@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
            }
        }

答案 1 :(得分:1)

http://www.droidnova.com/how-to-create-an-option-menu,427.html 如果您认为有用,请检查链接并投票

答案 2 :(得分:0)

在Android中将样式/主题应用于选项菜单并不容易。但是,有一个great article可以向您展示如何实现自己的。

设置背景颜色是可能的,但它在2.3上非常错误。有关详细信息,请参阅How to change the background color of the options menu?

答案 3 :(得分:0)

使用您喜欢的图标和颜色创建自定义xml视图。使用menuinflator将它们扩展到选项菜单。

答案 4 :(得分:0)

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

答案 5 :(得分:-1)

1:您只需编写即可为文本添加颜色  机器人:文字颜色= “#FF00FF” 在textview标签中的布局xml中

或第二种方法是

您可以使用添加颜色 values-> string.xml并将颜色资源添加到字符串