如何创建一个浮动的可触摸活动,仍然允许触摸其边界之外的本机控件?

2023-11-25

我用 mspaint 制定的方案最好地解释了我想要实现的目标:

enter image description here

我尝试过设置FLAG_NOT_TOUCH_MODAL根据描述,这应该正是我想要的,但它根本不起作用。我的活动消耗ALL触摸事件,甚至在其边界之外。

如果我设置FLAG_NOT_FOCUSABLE当然,该活动下的本机控件是可触摸的,但是即使在触摸其边框内部时,该活动也完全不可触摸。

我尝试过设置isFloatingWindow=true在清单中,但似乎没有任何区别。

任何人都可以实现这一点吗?我真的很感激一个以这种方式工作的小型演示活动,这样我就可以接受它并从那里开始工作。我已经尝试了 WindowManager 和 Intent 标志的多种排列,但似乎没有什么能完全按照我的需要工作。

提前致谢。

UPDATE:

我已经尝试过你的建议,但它仍然没有达到预期效果。

这是我的活动布局 xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="385dp"
android:layout_height="300dp"
android:theme="@android:style/Theme.Dialog"
tools:context="com.ui.activities.TestActivity"
android:id="@+id/testLayout"
android:visibility="visible"
android:background="@drawable/abc_ab_solid_light_holo"
android:clickable="true">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click me"
    android:id="@+id/button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="35dp"
    android:clickable="true"
    android:enabled="true"
    android:onClick="onClick" />

这就是Activity class:

public class TestActivity extends Activity implements View.OnClickListener {

private String TAG = TestActivity.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    setWindowParams();
}

private void setWindowParams() {
    WindowManager.LayoutParams wlp = getWindow().getAttributes();
    wlp.dimAmount = 0;
    wlp.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
    getWindow().setAttributes(wlp);
}

不幸的是,这就是结果:

Does not look like a dialog

我缺少什么?

Thanks.


Set a Dialog主题于Activity在你的清单中。例如:

android:theme="@android:style/Theme.Dialog"

然后设置如下Window参数在onCreate():

public void setWindowParams() {
    WindowManager.LayoutParams wlp = getWindow().getAttributes();
    wlp.dimAmount = 0;            
    wlp.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
    getWindow().setAttributes(wlp);     
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建一个浮动的可触摸活动,仍然允许触摸其边界之外的本机控件? 的相关文章

  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • 如何在 Android 中保存相机的临时照片?

    在尝试从相机拍照并将其保存到应用程序的缓存文件夹中时 我没有得到任何可见的结果 应用程序不会崩溃 但在 LogCat 上 当我尝试将 ImageView src 字段设置为刚刚获取的文件的 URI 时 我收到此消息 09 17 14 03
  • 如何快速自动发送FCM或APNS消息?

    我正在开发一项后端服务 通过 FCM 或 APNS 向移动应用程序发送推送通知 我想创建一个可以在一分钟内运行的自动化测试 并验证服务器是否可以成功发送通知 请注意 我不一定需要检查通知是否已送达 只需检查 FCM 或 APNS 是否已成功
  • 卸载后 Web 应用程序不显示“添加到主屏幕”

    这是我第一次创建网络应用程序 我设法解决了这个问题 所以我得到了实际的 chrome 提示 将其添加到主屏幕 然后我从手机上卸载了该网络应用程序 因为我想将其展示给我的同事 但是 屏幕上不再出现提示 问题 这是有意为之的行为还是我的应用程序
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 如何使用 Cordova 获取当前安装的应用程序的版本?

    我已经找到了应用程序可用性插件 https github com ohh2ahh AppAvailability它主要检查用户是否在其设备上安装了某个应用程序 是否有可能获得应用程序的当前版本 开发者名称 重要 以及所有可能的信息 一般来说
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 如何使用 IF 检查 TextView 可见性

    我有一个 onCheckedChangeListener 来根据选择的单选按钮显示文本视图 我有 1 个疑问和 1 个难题 想知道是否有人可以帮助我 问题 您能否将单选组默认检查值设置为 否 单选按钮 以便一开始就不会检查任何内容 问题 如
  • Ubuntu 16.04 - Genymotion:找不到 /dev/hw_random

    I install Genymotion on the Ubuntu 16 04 64Bit I created a virtual emulator for Android 6 0 then I run this emulator but
  • 如何发布Android .aar源以使Android Studio自动找到它们?

    我正在将库发布到内部 Sonatype Nexus 存储库 Android Studio 有一个功能 可以自动查找通过 gradle 引用的库的正确源 我将 aar 的源代码作为单独的 jar 发布到 Nexus 但 Android Stu
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • 尝试在 ubuntu 中编译 android 内核时出错

    我正在尝试从源代码编译 Android 内核 并且我已经下载了所有正确的软件包来执行此操作 但由于某种原因我收到此错误 arm linux androideabi gcc error unrecognized command line op
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 如何根据 gradle 风格设置变量

    我想传递一个变量test我为每种风格设置了不同的值作为 NDK 的定义 但出于某种原因 他总是忽略了最后味道的价值 这是 build gradle apply plugin com android library def test andr
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 将两个文本视图并排放置在布局中

    我有两个文本视图 需要在布局中并排放置 并且必须遵守两条规则 Textview2 始终需要完整显示 如果布局中没有足够的空间 则必须裁剪 Textview1 例子 文本视图1 文本视图2 Teeeeeeeeeeeeeeeeeextview1
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 如何使 macOS 框架可在 Nix 环境中 clang?

    我在 macOS 10 13 5 上学习 Rust 编程 并使用 Nix 来控制我的开发环境 一些行动 例如包括jsonwebtoken库或安装cargo watch模块 导致构建需要似乎未安装的 macOS 框架 我收到此错误消息 not
  • 在 VideoView 中播放视频时 Android 后退按钮不起作用

    在 VideoView 中播放视频时 Android 后退按钮不起作用 但它在播放视频之前有效 我正在为 VideoView 使用自定义 MediaController 我尝试使用调度按键事件 它不起作用 使用 VideoView 的 Ac
  • 将 ggplot2 颜色条刻度线更改为黑色

    在我的一些图中 我发现很难看到颜色条中的刻度线 我还没有找到改变蜱虫颜色的记录方法 所有示例似乎都集中在更改标签或根本不绘制刻度线 是否可以 Data require ggplot2 require grid n lt 100 x lt y
  • 给定一个时间,如何找到一个月前的时间

    给定一个时间 如何查找一个月前的时间 strtotime 1 month timestamp http php net manual en function strtotime php
  • Android:java.net.DatagramSocket.bind:无效参数异常

    背景 我正在编写一个简单的 UDP 应用程序来 ping 一个测试版服务器 我每分钟左右管理一次 告诉我它仍在运行 对于那些想知道的人 我无法在服务器上启用 ping 我计划在手机上运行此命令 以便在服务器不再响应时向我发出警告 我正在尝试
  • 如何将 Windows 的 EOL 设置为 LF,以便 API 通过 \n 获取值。不是 \r\n

    我使用 monaco editor create 方法来创建模型 问题是 monaco 正在将多行代码解析为 Windows 操作系统中的 r n 格式 我尝试在 monaco editor create 的 editorOptions 中
  • C++ IO 流简介

    我得到了一段代码本文我很困惑它是如何工作的 该片段开头写道 您可以通过测试读取结果来检测特定读取或写入操作是否失败 例如 要检查是否从用户读取了有效的整数 您可以执行以下操作 int x if cin gt gt x cout lt lt
  • Amazon S3 静态站点提供旧内容

    我的 S3 存储桶托管一个静态网站 我没有设置cloudfront 我最近更新了 S3 存储桶中的文件 当文件更新时 我在存储桶中手动确认 它仍然提供旧版本的文件 S3 上托管的静态网站是否存在某种缓存或版本控制 到目前为止我还没有找到任何
  • Backbone.js 在集合添加时触发渲染两次

    我正在使用 Todos 示例应用程序与最新版本的 Backbone 捆绑在一起 0 9 2 在学习 Backbone js 时 我的问题是 为什么应用程序设计为在将模型添加到 Todos 集合时触发渲染事件两次 如果我将此行放在 TodoV
  • 在数据库中存储性别(性别)

    我想以尽可能小的 大小 性能 成本将用户的性别存储在数据库中 到目前为止 我想到了 3 个场景 Int 与代码中的 Enum 对齐 1 男性 2 女性 3 char 1 Store m f或另一个单字符标识符 Bit 布尔值 该选项有合适的
  • ActionMailer 中的 Rails 3 Render Prawn pdf

    如何在ActionMailer中将大虾的pdf渲染为附件 我使用delayed job并且不明白 如何在操作邮件程序中 而不是在控制器中 渲染pdf文件 我应该使用什么格式 您只需要告诉 Prawn 将 PDF 渲染为字符串 然后将其作为附
  • Postgres 和 jsonb - 在任意键搜索值

    是否可以在 Postgres 的 JSONB 列中的任何键处查找给定值 在文档中我看不到任何例子 a 处的示例值JSONB column a 1 b 2 c 3 我想找到所有有的记录1作为任何地方的值 注意 可能还有其他键a b c目前未知
  • 往返数据的 Swift 数字类型

    Swift 3 倾向于Data代替 UInt8 我试图找出将各种数字类型 UInt8 Double Float Int64 等 编码 解码为数据对象的最有效 惯用的方法 There s 这个答案使用 UInt8 但它似乎使用了我在 Data
  • 在 SQL 代理作业中运行 C# 代码

    我有一段代码需要每天在指定时间运行 现在的代码是我的网络应用程序的一部分 有 2 个存储过程用于获取 保存代码使用的数据 如何设置 Microsoft SQL Server Management Studio 2008 R2 来执行我的代码
  • PsExec 在从编译为“Windows 应用程序”的非常简单的 C# 或 C++ GUI 程序执行时挂起

    我在从编译为 Windows 应用程序 而不是 控制台应用程序 的非常简单的 c 或 c gui 程序执行时遇到 PsExec 挂起 在下面 下面的 C 部分我粘贴了代码来重现问题 而 D 部分下我粘贴了 C 代码来重现相同的问题 当 ps
  • Php str_replace 不适用于特殊字符

    为什么这没有按预期工作 echo str replace F d ration Camerounaise de Football result F d ration Camerounaise de Football 我期待有 F d rat
  • k2 组件将其图像存储在数据库中的哪里?

    我想检索 查询 joomla k2 组件存储的图像 在图像选项卡下 要显示 K2 项目图像 您可以使用此 echo media k2 items cache md5 Image K2 ITEM ID HERE XL jpg
  • 如何获取引发异常的行号?

    In a catch块 如何获取引发异常的行号 如果您需要的不仅仅是从 Exception StackTrace 获得的格式化堆栈跟踪的行号 您可以使用堆栈跟踪 class try throw new Exception catch Exc
  • 如何使用 Node.js 在 Heroku 中托管 AngularJS 应用程序而不使用 yeoman?

    我正在尝试使用 Node js 将使用 AngularJS 的 Hello World 构建推送到 Heroku 中 但具有多个视图 部分 我首先在不使用 ngRoute 的情况下部署了一个 Hello World 意思是 没有部分 那是美
  • 如何创建一个浮动的可触摸活动,仍然允许触摸其边界之外的本机控件?

    我用 mspaint 制定的方案最好地解释了我想要实现的目标 我尝试过设置FLAG NOT TOUCH MODAL根据描述 这应该正是我想要的 但它根本不起作用 我的活动消耗ALL触摸事件 甚至在其边界之外 如果我设置FLAG NOT FO