菜单项文字颜色以编程方式更改不起作用?

时间:2017-08-14 10:24:51

标签: android

朋友们,我想更改我尝试过的菜单项文字颜色

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem settingsMenuItem = menu.findItem(R.id.newfield);
SpannableString s = new SpannableString(settingsMenuItem.getTitle());
s.setSpan(new ForegroundColorSpan(Color.parseColor("#00FFBB")), 0, s.length(), 0);
settingsMenuItem.setTitle(s);
return super.onPrepareOptionsMenu(menu);
}

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.feedbackaddnew, menu);

    return true;
}  

但颜色没有变化

3 个答案:

答案 0 :(得分:1)

您可以通过样式

更改菜单文本颜色

试试这个:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">    
<item name="actionMenuTextColor">@color/text_color</item>
<item name="android:actionMenuTextColor">@color/white</item>
</style>

答案 1 :(得分:0)

你可以试试这个。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.feedbackaddnew, menu);
    MenuItem settingsMenuItem = menu.findItem(R.id.newfield);
    SpannableString s = new SpannableString(settingsMenuItem.getTitle());
    s.setSpan(new ForegroundColorSpan(Color.parseColor("#00FFBB")), 0, s.length(), 0);
    settingsMenuItem.setTitle(s);
    return super.onCreateOptionsMenu(menu);
}

只需使用onCreateOptionsMenu()方法。

答案 2 :(得分:0)

你可以尝试这个,当onPrepareOptionsMenu调用时,如果我们尝试更新它,那么不更新可能是因为视图没有完全呈现,所以我添加了100毫秒的延迟并更新了它的正常工作。

@Override
public boolean onPrepareOptionsMenu(final Menu menu) {

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {

            View view = findViewById(R.id. newfield);

            // Cast to a TextView instance if the menu item was found
            if (view != null && view instanceof TextView) {
                ((TextView) view).setTextColor(Color.parseColor("#00FFBB"));
            }
        }
    }, 100);

    return true;
}

注意:

  

我们正在延迟发布,所以如果我们关闭应用程序就会在此之前   菜单将为null它会崩溃,所以最好尝试撤销runnable   在活动破坏之前。