2014-02-20 90 views
2

我一直在开发应用程序,这些天,代码改变文本项:Android的变化选项菜单文本颜色

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater=getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 

     int positionOfMenuItem = 0; // or whatever... 
    MenuItem item = menu.getItem(positionOfMenuItem); 
    SpannableString s = new SpannableString("My red MenuItem"); 
    s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), 0); 
    item.setTitleCondensed(s); 
    return true; 
} 

它的工作原理很漂亮,但是当我点击菜单项,它与错误

停止LogCat

回答

1

使用Spannable标志常量之一作为调用setSpan()的最后一个参数,例如Spannable.SPAN_EXCLUSIVE_EXCLUSIVE。请参阅http://developer.android.com/reference/android/text/Spannable.html

此外,请考虑将inflate之后的代码移至onPrepareOptionsMenu()

以下文章可能有用:http://www.techrepublic.com/article/style-androids-overflow-menu-using-this-sanity-saving-workaround/

+0

我已经做了你所说的。 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE仍然不能正常工作,程序fc与以前一样。 – RealDream

+0

您提到的示例具有相同的问题。 – RealDream