我正在使用棒棒糖和AppCompat-v7库中引入的新添加工具栏.我在设置工具栏时遵循了this guide,我注意到,当你调用一些可以打开上下文操作栏的东西(比如高亮显示文本以便复制/粘贴)时,它会将工具栏向下推到页面上.你可以在页面底部的图片中看到我在说什么:

所以,基本上,我是这样设置的.我在一个xml文件中定义了工具栏,该文件与include标记一起使用:

<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"/>

然后,我在我的视图中实例化它:

<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>

在代码中,我这样设置:

    // On Create method of activity:
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

有人知道如何使上下文ActionBar位于工具栏之上吗?

工具栏和上下文操作栏

推荐答案

Update:

解决方案:使用windowActionModeOverlay属性.在你的主题中设置:

<item name="windowActionModeOverlay">true</item>

动作模式将显示在动作栏上,而不是按下.(如果您没有使用最新的AppCompat,则需要在属性中添加"android:"前缀).它基本上让AppCompat知道屏幕顶部有一个工具栏,它应该在上面绘制ActionMode.


旧答案/解决方法:

我也遇到了同样的问题.无论我设置什么主题,它总是将我设置为ActionBar的工具栏向下推.我try 了使用和不使用支持库,但都无关紧要.

不幸的是,我无法修复它,所以我构建了一个变通方法.在我ActionModeCallback岁的onCreateActionMode岁时,我隐藏了动作栏:

actionBarToolbar.setVisibility(View.GONE);

onDestroyActionMode年,我再次展示:

actionBarToolbar.setVisibility(View.VISIBLE);

隐藏/显示发生得如此之快,以至于在我的测试设备上都看不到.当然也有不利的一面:虽然Enter动画仍然有效,但是上下文操作栏的退出动画会丢失,因为工具栏会立即弹出到它上面.但在我们找到更好的解决方案之前,我想我们只能这样了.


(我的活动实际上是扩展一个自定义BaseActivity类,该类有一个名为getActionBarToolbar()的方法,取自Google I/O 2014 app source code,因此我可以很容易地获取Fetch the Toolbar:

BaseActivity activity = (BaseActivity) getActivity();
activity.getActionBarToolbar().setVisibility(View.GONE);

糟糕的是,I/O应用程序不使用上下文操作栏.)

Android相关问答推荐

我遇到了一个HashMaps对象没有存储在Firebase数据库中的问题.HashMap的一个对象put方法未被存储

Jetpack Compose-如何使用值动画直接控制其他动画

无法将非静态方法与Frida挂钩

Android Jetpack Compose调用view-model函数仅一次

Android Kotlin ImageView内置于Kotlin ImageView中.适配器未按预期更新

Lateinit变量结果始终以kotlin格式未初始化

如何使用其他组件的位置来定位自定义弹出窗口

Android Studio SQLite 错误:列不正确(没有这样的列:_id)

如何将 Room Persistence 依赖项正确添加到我的 Jetack Compose Android 应用程序

如何删除 Jetpack Compose 中按钮的左边框?

具有管理员权限的 Kotlin 中的多用户系统

Android 模拟器 Wifi 连接没有互联网

Android apk 不工作

Jetpack Compose 惰性列在单个项目更新时重新组合所有项目

android xml底部空间大

缺少类 com.google.android.datatransport.runtime.ForcedSender

如何在 TextButton 中分隔文本和图标

重命名列失败的房间自动迁移(NOT NULL 约束失败,生成错误的迁移类)

在 Android Studio 中替换字符串中的 "

设备文件资源管理器-ROOM 数据库中的数据库文件夹为空