0

我创建了一个简单的菜单,其中包含两个选项,即“添加新联系人”和“设置”以及白色 png 图像。

所以现在如果我在 2.3.3 android OS 版本中运行,它看起来像下图:

Android 2.3.3 选项菜单

现在如果我在 2.2 android 操作系统中运行,那么它看起来像下图:

在此处输入图像描述

所以现在如果我想在 android 2.2 中将背景设置为黑色,我该怎么做才能让图标可见。请给我关于这个问题的任何建议。

4

1 回答 1

1

处理选项菜单的最佳方法是对其进行自定义。

您可以自定义选项菜单,包括:

添加自定义字体

更改字体大小

更改字体颜色

将背景设置为可绘制资源(例如图像、边框、渐变)

要将背景更改为边框或渐变,您必须在 res 中创建一个名为 drawable 的资源文件夹,并在其中创建边框 XML 或渐变 XML。

这一切都可以通过编程方式完成,如下所示:

 public class CustomMenu extends Activity {   
/** Called when the activity is first created. */   
@Override  
public void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState);     } 
public boolean onCreateOptionsMenu(android.view.Menu menu) { 
    MenuInflater inflater = getMenuInflater();  
    inflater.inflate(R.menu.cool_menu, menu);  
    getLayoutInflater().setFactory(new Factory() {  
        public View onCreateView(String name, Context context, 
                AttributeSet attrs) {   
        if (name.equalsIgnoreCase(                                             "com.android.internal.view.menu.IconMenuItemView")) { 
    try {  
        LayoutInflater li = LayoutInflater.from(context); 
        final View view = li.createView(name, null, attrs); 
        new Handler().post(new Runnable() { 
        public void run() {   
// set the background drawable if you want that or keep it default 
//either FOR image, border, gradient, drawable,etc.//   
        view.setBackgroundResource(R.drawable.myimage); 
        ((TextView) view).setTextSize(20);
        // set the text font and color  
        Typeface face = Typeface.createFromAsset(  
        getAssets(),"OldeEnglish.ttf");  
        ((TextView) view).setTypeface(face); 
        ((TextView) view).setTextColor(Color.RED);      }     }); 
        return view;      } 
        catch (InflateException e) {  
        //Handle any inflation exception here  
        } catch (ClassNotFoundException e) {    
        //Handle any ClassNotFoundException here    
                        }     }   
            return null;    }   }); 
           return super.onCreateOptionsMenu(menu);     } 
于 2012-08-27T06:33:19.767 回答