在Android中,为了使onCreateOptionsMenu与主题匹配,您需要遵循以下步骤:
res/values/styles.xml
文件中定义一个主题。例如,创建一个名为MyAppTheme
的主题:<resources>
<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
这里,我们使用了Theme.AppCompat.Light.DarkActionBar
作为父主题。您可以根据需要选择其他主题。
onCreateOptionsMenu
方法中,使用MenuInflater
将菜单资源文件(例如R.menu.my_menu
)展开到提供的Menu
对象中。为了使菜单与主题匹配,您需要使用ContextThemeWrapper
:@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 使用ContextThemeWrapper创建一个与主题匹配的上下文
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(this, R.style.MyAppTheme);
// 使用ContextThemeWrapper创建一个MenuInflater
MenuInflater menuInflater = new MenuInflater(contextThemeWrapper);
// 将菜单资源文件展开到提供的Menu对象中
menuInflater.inflate(R.menu.my_menu, menu);
return true;
}
现在,您的onCreateOptionsMenu
方法将与您的应用主题匹配。如果您希望为特定Activity设置不同的主题,只需在onCreate
方法中调用setTheme()
方法,然后重复上述步骤。例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
// 设置应用主题
setTheme(R.style.MyAppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ...
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:android oncreateoptionsmenu 适用哪些场景