上下文操作模式不过滤触摸

2024-01-07

当上下文操作模式覆盖在 android.support.v7.widget.Toolbar 顶部时,似乎不会过滤其整个宽度上的触摸,而是让触摸“落入”工具栏上的(不可见)小部件。

我的工具栏包含一个自定义小部件(工具栏宣称的优点之一)。我将上下文操作模式设置为覆盖工具栏,并且它完全隐藏了它。但是,当我触摸(现在被遮挡的)自定义小部件所在的位置时,触摸会传递到它。我想知道这是否是一个错误/疏忽,但我可能没有抓住这一点,或者我的期望可能很高。我假设如果上下文操作覆盖上被遮挡的自定义组件的位置有某些内容,则触摸不会通过。

我正在 Kitkat 上测试这个。

这是一些示例代码:

MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

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

    TextView barTextView = (TextView) toolbar.findViewById(R.id.textview_bar);
    barTextView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "Bar TextView clicked", Toast.LENGTH_SHORT).show();
        }
    });

    mActionModeCallback = new ActionModeCallback();

    TextView mainTextView = (TextView) findViewById(R.id.textview_main);
    mainTextView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "Main TextView clicked", Toast.LENGTH_SHORT).show();
            if (mActionMode != null) {
                return;
            }
            getSupportActionBar().startActionMode(mActionModeCallback);
        }
    });
}

活动主文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
    <android.support.v7.widget.Toolbar
        android:id="@+id/actionbar_toolbar"
        android:layout_height="?attr/actionBarSize"
        android:layout_width="match_parent"
        android:background="?attr/colorPrimary"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar">
        <TextView
            android:id="@+id/textview_bar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="Bar"
            android:textColor="#FF0000"/>
    </android.support.v7.widget.Toolbar>
    <TextView
        android:id="@+id/textview_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="SomeTextToClick"/>
</LinearLayout>

样式.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="windowActionModeOverlay">true</item>
    </style>
</resources>

我还尝试使用以下替代方法设置操作模式,但行为是相同的:

Toolbar toolbar = (Toolbar) MainActivity.this.findViewById(R.id.actionbar_toolbar);
mActionMode = toolbar.startActionMode(mActionModeCallback);

此时,我只能想到要么在上下文操作模式打开时显式禁用自定义组件,要么以某种方式用不可见的垃圾填充上下文操作栏以更严重地遮挡工具栏。

下面是一些截图。

在单击任何内容之前:

单击“SomeTextToClick”后,上下文操作模式现已打开,工具栏中的文本被遮挡,但此时我可以单击上下文操作栏的中心,并且该单击由“Bar”上的侦听器处理" 工具栏中的 TextView:

有人可以帮忙吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

上下文操作模式不过滤触摸 的相关文章

  • kubectl:在 WSL 终端中找不到

    我按照以下说明在 Windows10 上安装了 WSL2 https learn microsoft com en us windows wsl install win10 https learn microsoft com en us w
  • 频繁插入已排序的集合

    我已经对集合 列表 进行了排序 并且我需要始终保持其排序 我目前在我的集合上使用 List BinarySearch 然后在正确的位置插入元素 我也尝试过在每次插入后对列表进行排序 但性能不可接受 有没有一种解决方案可以提供更好的性能 也许
  • 什么是 Android DecorView?

    http developer android com reference android view Window html getDecorView http developer android com reference android
  • 如何修复 Mapbox GL 中的画布大小?

    我正在使用 Mapbox GL 显示地图并从其中心裁剪固定大小的图像 它非常适合我设计的特定分辨率 1920x1080 但是当我开始使页面响应时 地图样式width and height变化了 画布尺寸也开始变化了 因此 当我裁剪图像时 大
  • 列出 J 中数字的数字

    我使用的编程语言 J 我想将一个数字的所有数字放入一个列表中 From 12345 to 1 2 3 4 5 我能做些什么 我写这个的方式是 10 1 我们可以看到它与这句话的使用 10 1 123456789 1 2 3 4 5 6 7
  • 为什么在 data.frame 中预先指定类型会比较慢?

    我预先分配了一个大 data frame 以便稍后填写 我通常这样做NA是这样的 n lt 1e6 a lt data frame c1 1 n c2 NA c3 NA 我想知道如果我预先指定数据类型是否会让事情变得更快 所以我测试了 f1
  • 文件和目录条目 API 在 Chrome 中损坏?

    我正在尝试使用文件和目录条目 API 创建一个文件上传器工具 该工具允许我将文件和目录的任意组合放入浏览器窗口中 以供读取和上传 我完全意识到 可以通过使用文件输入元素来实现类似的功能webkitdirectory已启用 但我正在测试一个用
  • python:日志记录:我们可以向记录器添加多个过滤器吗?考虑哪一个

    我试图了解 Python 日志记录中的多个过滤器 一个在配置中定义 另一个在代码中定义 如何工作 我正在开发一个 Django 项目 下面是我在 settings py 中的记录器配置 我的目标是switch on and switch o
  • 尽管 getBoundingClientRect() 是假的,但如何将事件坐标转换为 SVG 坐标?

    我正在尝试根据鼠标的位置在 SVG 元素上动态绘制内容 不幸的是 我很难将 mousemove 事件中的鼠标坐标转换为 SVG 元素的坐标空间 这是我一直在测试的一个有缺陷的函数 CylinderDemo prototype handleM
  • 安装 JDK 时出错:keytool 命令需要已安装的 proc fs (/proc)。 Linux 的 Windows 子系统

    我尝试在 Linux 的 Windows 子系统 Ubuntu 14 04 上安装 Oracle JDK 1 7 但出现以下错误 the keytool command requires a mounted proc fs proc Jav
  • 错误“RESOURCE_EXHAUSTED”的原因是什么?

    我有一个 WordPress 博客 当我登录到仪表板时 顶部突出显示了以下异常 Ga Lib Api Request Exception There was an error while contacting Google API erro
  • 应用非限定名称查找而不是依赖于参数的名称查找

    考虑标准 sec 3 4 1 3 中的一个示例 typedef int f namespace N struct A friend void f A operator int void g A a int i f a f is the ty
  • ASP.NET API:尚未为此 DbContext 配置数据库提供程序

    我正在尝试从我的 Net Core API 项目连接到 MySql 数据库 这是我的上下文类 public class MyContext DbContext public MyContext public MyContext DbCont
  • 清理 TPL 中的 CallContext

    根据我使用的是基于 async await 的代码还是基于 TPL 的代码 我在逻辑清理方面得到了两种不同的行为CallContext 我可以设置和清除逻辑CallContext如果我使用以下异步 等待代码 正如我所期望的 class Pr
  • 在本地调试 Azure Functions

    我在 Net 标准 2 0 中有一个函数 FunctionName A Test public static async Task
  • Android:如何获取所有可用意图过滤器的列表?

    我搜索了 Android 文档 但由于某些疯狂的原因 我无法找到所有可用意图过滤器的列表 我正在寻找一个意图过滤器 它可以执行诸如通过广播接收器通知我特定活动 例如浏览器或电子邮件 已启动或位于前台之类的操作 有人能帮我吗 PackageE
  • 加载谷歌地图控件时是否有事件?

    我知道tilesloaded 但控件似乎在该事件之后加载 我基本上希望能够通过 jQuery 获取控件 但甚至找不到正确的监听 我也刚刚处理了 没有类似的事件 在控件可见之前空闲和tilesloaded触发 因此 基本上将 特殊控制 类添加
  • MVC3 中定义路由的文件

    我有这个文件
  • NPM 如何处理版本冲突?

    由于 NPM 版本 3 节点模块和依赖项都安装在同一根级别 但是 如果我安装两个依赖于同一模块的两个不同版本的模块怎么办 例如 如果我安装异步npm i email protected cdn cgi l email protection
  • File.Move 的原子性

    我想将目录中的文件重命名为原子事务 该文件不会更改目录 该路径作为 NTFS 文件系统的 UNC 路径提供 可能位于服务器 03 或 08 上 File Move 对于这些目的来说是原子的吗 例如 它要么成功完成 要么失败 以使原始文件仍然

随机推荐