我正在使用Lollipop和AppCompat-v7库中引入的新添加的工具栏.我按照本指南设置了工具栏我注意到当你调用一些会调出上下文ActionBar的内容(例如突出显示复制/粘贴的文本)时,它会将工具栏向下推到页面上.您可以在页面底部的图像中看到我在说什么:
所以,基本上,我这样设置它.我在xml文件中定义了工具栏,我使用包含标签:
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"/>
Run Code Online (Sandbox Code Playgroud)
然后,我在我的视图中实例化它:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/root"
tools:context=".MainActivity">
<include
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- Rest of view -->
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
在代码中,我这样设置:
// On Create method of activity:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
有没有人知道怎么做才能让Contextual ActionBar超越工具栏?

android android-appcompat android-5.0-lollipop android-toolbar
我不确定这是一个错误还是某种程度上我没有正确使用新的Toolbar类.
我能够使用一个可用的主题直接成功主题ActionBar.这也允许我主题ActionMode.一切都按预期完美.我就是这样做的.
<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionModeBackground">@drawable/action_mode_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找更多的灵活性,所以我试图使用支持库中的新工具栏.完善工具栏并且工作正常,但是,现在操作模式不再按预期工作.自定义背景不起作用,操作模式栏正在按下工具栏.
为了解决推下问题我使用了标志windowActionModeOverlay.对我来说,动作模式不会成为工具栏的一部分很糟糕......:/
<style name="Theme.ActionBar" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowActionModeOverlay">true</item>
<item name="actionModeBackground">@drawable/action_mode_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在我的活动中,我执行以下操作以使我的工具栏成为默认的ActionBar.
Toolbar toolbar = (Toolbar) findViewById(R.id.toolBar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
现在我尝试了很多东西.我甚至尝试潜入源头来弄清楚发生了什么.
任何想法为什么会这样?如何设置ActionMode的样式?或者更具体地说,我如何更改ActionMode的背景?
更新1
我注意到,当添加<item name="windowActionBar">false</item>到我的活动主题时,操作模式会丢失其主题而不是将其设置为true.显然将其设置为true它将包括窗口操作栏.
更新2
我能够使用几个mods正确地获得主题的动作模式.
动作模式背景.事实证明你只需将ActionMode主题背景设置为android:background!此外,您需要在主题上指定它的文本.
windowActionModeOverlay
<item name="windowActionBar">false</item>
后箭头没有被设计样式.我覆盖了所使用的drawable,只是添加了我自己的白色.
windowActionModeOverlay
我知道有一些关于样式操作栏的上下文操作栏(ActionMode)部分的问题,但它们似乎并不能解决我所追求的问题.
我正在使用带有浅色主题和黑暗操作栏的工具栏.工具栏看起来像我想要的,但动作模式看起来像常规的黑暗主题.我需要改变自己的风格才能获得黑暗主题动作模式(不仅仅是动作栏)?似乎我应该能够通过点击进入快速,Theme.AppCompat因为这显示了CAB我想要的方式,但我不希望应用程序的其余部分变暗.
我只关心API 14+并使用支持工具栏代替操作栏.
这是我的基本风格
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:actionModeBackground">@color/colorActionMode</item>
<item name="android:windowActionModeOverlay">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
工具栏样式
<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item>
<item name="actionMenuTextColor">@color/abc_primary_text_material_dark</item>
<item name="android:textColorSecondary">@color/abc_primary_text_material_dark</item>
<item name="android:background">@color/colorPrimaryDark</item>
</style>
Run Code Online (Sandbox Code Playgroud)
工具栏布局文件(此处设置popupTheme似乎没有任何效果).
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
app:theme="@style/AppTheme.Toolbar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="2dp"
android:focusable="false"/>
Run Code Online (Sandbox Code Playgroud)
这是我的工具栏(这就是我想要的)

这是我的ActionMode(我需要反转)

这就是我想要ActionMode的样子(我通过改变我的样式Theme.AppCompat而不是继承而得到的Theme.AppCompat.Light.DarkActionBar.问题是应用程序的其余部分变暗,我不想要.

android android-actionbar android-actionmode android-toolbar
android ×3