在Android中,为了使onCreateOptionsMenu与主题匹配,您需要遵循以下步骤:
- 首先,在您的项目的
res/values/styles.xml
文件中定义一个主题。例如,创建一个名为MyAppTheme
的主题:
这里,我们使用了Theme.AppCompat.Light.DarkActionBar
作为父主题。您可以根据需要选择其他主题。
- 在您的Activity的
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); // ... }