自定义menu的background

 

 

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        super.onCreateOptionsMenu(menu);

        setMenuBackground();

        return true;

    }



    protected void setMenuBackground(){

 

        getLayoutInflater().setFactory( new Factory() {

 

            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 () {

                                view.setBackgroundResource(R.drawable.menu_bkg);

                            }

                        } );

                        return view;

                    }

                    catch ( InflateException e ) {}

                    catch ( ClassNotFoundException e ) {}

                }

                return null;

            }

        });

    }