AppCompat ActionBar 主题化 spinner 下拉菜单

4

我正在升级一个应用程序,以使用AppCompat v7 21.0.0。

我尚未迁移到Toolbar,而是尝试为Window decor ActionBar设置主题。我在操作栏中使用NAVIGATION_MODE_LIST和ShareActionProvider。导航模式设置如下:

getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

然而,下拉式菜单覆盖了微调器并且是暗色的。这里是问题的图片:http://i.stack.imgur.com/kNwdm.png 我希望下拉菜单出现在操作栏下方,并且比微调器更大。我已经尝试了许多种方式来调整主题,但我所做的一切似乎对微调器的下拉式菜单没有任何影响。
这就是主题。
<style name="AppTheme.Blue" parent="@style/Theme.AppCompat.Light.DarkActionBar">
  <item name="colorPrimary">@color/theme_blue</item>
  <item name="colorPrimaryDark">@color/theme_blue_dark</item>
  <item name="colorAccent">@color/theme_blue_accent</item>
</style>

在同一个操作栏中的ShareActionProvider存在与Toolbar相同的问题,因此迁移到Toolbar不能解决这两个问题:

AppCompat ToolBar popupTheme not used in the ShareAction MenuItem

1个回答

5
使用api21版本后,setNavigationMode(ActionBar.NAVIGATION_MODE_LIST)方法已被弃用,请注意不要使用它。
这个答案并不能解决你的问题,但是可以使用新的Toolbar类来实现。由于Toolbar是一个ViewGroup,因此可以在其中使用Spinner。
参考链接:http://developer.android.com/reference/android/support/v7/app/ActionBar.html#setNavigationMode(int)
<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar_actionbar"
        android:layout_height="?attr/actionBarSize"
        android:layout_width="match_parent"
        android:background="?attr/colorPrimary">

    <Spinner
            android:id="@+id/spinner_toolbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

</android.support.v7.widget.Toolbar>

然后您可以使用以下方式将工具栏用作操作栏:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(toolbar);

最后,您需要在工具栏中禁用标题:
getSupportActionBar().setDisplayShowTitleEnabled(false);

谢谢Gabriele。我希望至少在第一个材料发布中避免用工具栏替换操作栏的工作,但现在我已经完成了大部分工作,并将下拉菜单移动到了工具栏下方,我相信现在我将能够轻松地对其进行主题设置。 - user3209486

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接