朋友们,我想更改我尝试过的菜单项文字颜色
@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;
}
但颜色没有变化
答案 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 在活动破坏之前。