相关疑难解决方法(0)

使用AppCompat-v7的工具栏和上下文ActionBar

我正在使用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超越工具栏?

工具栏和上下文ActionBar

android android-appcompat android-5.0-lollipop android-toolbar

179
推荐指数
5
解决办法
6万
查看次数

使用工具栏时无法设置动作模式

我不确定这是一个错误还是某种程度上我没有正确使用新的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正确地获得主题的动作模式.

  1. 动作模式背景.事实证明你只需将ActionMode主题背景设置为android:background!此外,您需要在主题上指定它的文本.

    windowActionModeOverlay
    <item name="windowActionBar">false</item>

  2. 后箭头没有被设计样式.我覆盖了所使用的drawable,只是添加了我自己的白色.
    windowActionModeOverlay

android android-support-library material-design

13
推荐指数
1
解决办法
8330
查看次数

如何用我的主题指定黑暗动作模式

我知道有一些关于样式操作栏的上下文操作栏(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

9
推荐指数
2
解决办法
4221
查看次数