【问题标题】:Change actionbar spinner theme更改操作栏微调器主题
【发布时间】:2017-02-01 01:13:30
【问题描述】:

我有一个主题如下的活动:Theme.AppCompat.Light.DarkActionBar。结果,操作栏标题“更多”选项菜单项都是白色的,正如我所料:

但是,正如您从屏幕截图中看到的那样,下拉菜单的背景为黑色。我希望下拉菜单具有灰色背景(请参见下面的屏幕截图)。

我注意到下拉菜单的样式和activity的大体样式有关,比如如果activity样式改成:Theme.AppCompat.Light,那么现在看起来是这样的:

这正是我正在寻找的那种风格,但正如您可能已经注意到的那样,操作栏标题和“更多”选项现在是黑色的,考虑到这种主题是有意义的,但不再是我需要的.

现在,我知道有几种方法可以处理这种情况:第一种方法是根本不使用导航模式列表,因为它已经被弃用,另一种方法是使用 Toolbar 并拥有里面有一个Spinner,两者都有样式。但在走这条路之前,我想确保可能有更简单的方法。

我尝试了一个从Theme.AppCompat.Light 扩展的自定义主题:

 <style name="LightTheme" parent="Theme.AppCompat.Light" />

然后在膨胀下拉菜单时使用它来创建主题上下文:

Context context = new ContextThemeWrapper(this, R.style.LightTheme);
CustomAdapter adapter = new CustomAdapter(context);

ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setListNavigationCallbacks(adapter, null);

但不幸的是,这没有效果。

那么,有没有一种方法可以在不影响其他组件的情况下更改下拉菜单的样式,例如:操作栏?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    您始终可以在您的应用程序的style.xml 中设置工具栏属性的主题。我建议使用无操作栏样式,您可以在工具栏中设置微调器样式,但由于您不使用它,您可以直接在主题中设置样式。

    对于微调器样式,您可以将其添加到您的主应用主题或特定主题中:

    <item name="android:spinnerStyle">@style/Theme.AppCompat.Light</item> <item name="spinnerStyle">@style/Theme.AppCompat.Light</item>

    对于弹出式样式:

    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>

    【讨论】:

    • 完美!谢谢。
    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多