gpt4 book ai didi

android - 以编程方式更改 MenuItem 文本颜色

转载 作者:IT老高 更新时间:2023-10-28 23:40:31 26 4
gpt4 key购买 nike

所以我有一个菜单项,定义为:

<item
android:id="@+id/action_live"
android:title="@string/action_live"
android:orderInCategory="1"
app:showAsAction="ifRoom|withText" />

它显示为文本,如下所示:

Screenshot 1

我想以编程方式更改“LIVE”文本颜色。找了一阵子,找到了一个方法:

全局定义:

private Menu mOptionsMenu;

和:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
mOptionsMenu = menu;
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

我愿意:

MenuItem liveitem = mOptionsMenu.findItem(R.id.action_live);
SpannableString s = new SpannableString(liveitem.getTitle().toString());
s.setSpan(new ForegroundColorSpan(Color.RED), 0, s.length(), 0);
liveitem.setTitle(s);

但是什么也没发生!

如果我对溢出菜单的某个项目执行相同操作,它会起作用:

Screenshot 2

app:showAsAction="ifRoom|withText"项目是否有一些限制?有什么解决办法吗?

提前致谢。

最佳答案

这个聚会有点晚了,但我花了一段时间研究这个并找到了一个解决方案,它可能对其他尝试做同样事情的人有用。一些功劳归功于 Harish Sridharan 引导我朝着正确的方向前进。

您可以使用 findViewById(R.id.MY_MENU_ITEM_ID) 定位菜单项(前提是菜单已创建和准备好),并将其转换为 TextView Harish 建议的实例,然后可以根据需要设置样式。

public class MyAwesomeActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);

// Force invalidatation of the menu to cause onPrepareOptionMenu to be called
invalidateOptionsMenu();
}

private void styleMenuButton() {
// Find the menu item you want to style
View view = findViewById(R.id.YOUR_MENU_ITEM_ID_HERE);

// Cast to a TextView instance if the menu item was found
if (view != null && view instanceof TextView) {
((TextView) view).setTextColor( Color.BLUE ); // Make text colour blue
((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_SP, 24); // Increase font size
}
}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean result = super.onPrepareOptionsMenu(menu);
styleMenuButton();
return result;
}

}

这里的技巧是在 Activity 的 onCreate 事件中强制菜单无效(从而导致 onPrepareMenuOptions 比正常情况下更快地被调用)。在这个方法中,我们可以根据需要定位菜单项和样式。

关于android - 以编程方式更改 MenuItem 文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com