android

android oncreateoptionsmenu 如何与主题匹配

小樊
84
2024-12-06 01:27:52
栏目: 编程语言

在Android中,为了使onCreateOptionsMenu与主题匹配,您需要遵循以下步骤:

  1. 首先,在您的项目的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作为父主题。您可以根据需要选择其他主题。

  1. 在您的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);

    // ...
}

0
看了该问题的人还看了