Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Jetpack Compose:如何禁用儿童手势检测

Jetpack Compose:如何禁用儿童手势检测
EN

Stack Overflow用户
提问于 2021-09-11 02:41:24
回答 1查看 1.1K关注 0票数 6

是否有一个内置的Modifier可以禁用其子对象的任何手势检测/指针输入交互?

例如:

代码语言:javascript
运行
AI代码解释
复制
@Composable
fun Foo() {
    Box(modifier = Modifier.gesturesEnabled(enabled = false)) {
        BasicText(text = "Hello", modifier = Modifier.clickable { // clickable is not enabled
            // ...
        })
    }
}

我可以使用CompositionLocal实现我自己的(非常简单的)实现

代码语言:javascript
运行
AI代码解释
复制
val LocalGesturesEnabled = compositionLocalOf { mutableStateOf(true) }

fun Modifier.myClickable(onClick: () -> Unit, enabled: Boolean = true) = composed {
    clickable(enabled = enabled && LocalGesturesEnabled.current.value, onClick)
}

但它不适用于第三方可组合组件或更复杂的可组合组件,如LazyList

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-11 11:38:17

我认为没有这样的系统修饰符的原因是,你必须向用户展示,通过对启用/禁用的控件使用不同的状态,或者通过使用半透明的覆盖视图等,手势是被禁用的。

但是从技术上讲,使用pointerInput修饰符可以使用awaitPointerEvent获取所有的触摸事件。

使用pass = PointerEventPass.Initial参数,您将在所有子视图之前接收事件,然后您可以将事件标记为已用consumeAllChanges处理,这样子视图将不再接收它们。

代码语言:javascript
运行
AI代码解释
复制
fun Modifier.gesturesDisabled(disabled: Boolean = true) =
    pointerInput(disabled) {
        // if gestures enabled, we don't need to interrupt
        if (!disabled) return@pointerInput

        awaitPointerEventScope {
            // we should wait for all new pointer events
            while (true) {
                awaitPointerEvent(pass = PointerEventPass.Initial)
                    .changes
                    .forEach(PointerInputChange::consumeAllChanges)
            }
        }
    }

如果您想了解有关自定义手势处理的更多信息,请查看this article

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69142209

复制
相关文章
【Android笔记】Jetpack Compose
注意,Jetpack Compose中的控件被定义成一个一个的可组合函数,官方称这些控件为Composable,翻译成中文是“可组合项”,当强调它作为一个界面的一部分出现时,我会使用“控件”或“元素”之类的术语,要注意这三者之间的差别,我不知道有没有更好的词,所以我只能用这两个。当仅仅强调它是一个可组合项时,我会正常使用“可组合项”这个术语。 Layout系统
程序员小何SS
2021/12/12
8230
Jetpack Compose ! 来战!
赶在 Jetpack Compose 挑战赛的末尾完成了作品。其实我主要是奔着奖品去的,虽然现在也不知道还能不能拿到奖品,毕竟是个全球活动,还只有 500 份。
路遥TM
2021/08/31
7180
Jetpack Compose ! 再战!
这次要做的是一个计时器,一个页面即可,涉及到的知识点有状态管理 (State) ,动画。难度比上一周稍大,奖品缺拉胯了。
路遥TM
2021/08/31
7170
Jetpack Compose · 快照系统
Jetpack Compose 引入了一种处理可观察状态的新方法 —— Snapsot(快照)。在 Compose 中我们通过 state 的变化来触发重组,那么请思考以下几个问题:
用户9239674
2022/02/07
1.1K0
flutter:禁用 tabbar手势教程
在手机上,tabbar是很常见的导航方式,在flutter中我们通过TabBar、TabController和TabBarView轻松实现效果。
用户1974410
2022/09/20
1.4K0
flutter:禁用 tabbar手势教程
Jetpack-Compose 学习笔记(一)—— Compose 初探
历时两年,Android 团队推出了全新的原生 Android 界面 UI 库——Compose。当然,Compose 也是属于 Jetpack 工具库中的一部分,官方宣称可以简化并加快 Android 上的界面开发,可以用更少的代码去快速打造生动而精彩的应用。1.0 版本就在上个月底刚刚发布,而且可以在生产环境中使用!不管咋样,先上手看一看!
修之竹
2022/08/19
2.2K0
Jetpack-Compose 学习笔记(一)—— Compose 初探
深度解析 Jetpack Compose 布局
Jetpack Compose 是用于构建原生 Android 界面的新工具包。它可简化并加快 Android 上的界面开发,使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。Compose 使用全新的组件——可组合项 (Composable) 来布局界面,使用 修饰符 (Modifier) 来配置可组合项。
Android 开发者
2022/03/29
2.1K0
深度解析 Jetpack Compose 布局
Jetpack Compose 使用前后对比
为了包含 Jetpack Compose 1.0.0-beta05 的更新内容,这篇文章在第一次发布后做出了更新。如果您希望查看 原始版本,请点击 这里。
Android 开发者
2022/03/09
1.1K0
Jetpack Compose 使用前后对比
Jetpack Compose开篇 之 HelloWorld
此前我更新了Jetpack Architecture系列的文章,如果你还不了解Jetpack,可以移步至 Android JetPack系列文章 ,持续更新中
黄林晴
2020/12/01
1.9K0
Jetpack Compose开篇 之 HelloWorld
【译】JetPack Compose for Desktop 初体验
目前为止,我们只在 Android 开发中看到 Jetpack Compose[2]。今天,我们将进入一个崭新的阶段,因为 JetBrains 宣布了 IntelliJ 的早期访问版本,允许你使用 Jetpack Compose 来构建 Windows 应用程序。
出其东门
2021/08/06
5.3K0
Jetpack Compose之 在Compose中使用Navigation导航
大约在一年半前,我发布了Compose的第一篇文章 Jetpack Compose开篇 之 HelloWorld,连我自己也没想到,这一年半的时间中我竟再也没有看过Compose..., 如今Compose已经发布了稳定版本,还没学会Compose让我的头发又白了许多~
黄林晴
2022/05/10
2K0
Jetpack Compose之 在Compose中使用Navigation导航
Android Jetpack组件 Compose 使用介绍
  一直以来,在Android 中构建UI页面是一个很耗时的操作,我们需要图形界面和xml去创建布局,通过预览达到我们想要的效果,而Jetpack推出的新组件Compose就解决了这个痛点,下面让我们来了解它,使用它。
晨曦_LLW
2022/03/28
3K0
Android Jetpack组件 Compose 使用介绍
深入详解 Jetpack Compose | 实现原理
本文是 Compose 系列的第二篇文章。在 第一篇文章 中,我已经阐述了 Compose 的优点、Compose 所解决的问题、一些设计决策背后的原因,以及这些内容是如何帮助开发者的。此外,我还讨论了 Compose 的思维模型、您应如何考虑使用 Compose 编写代码,以及如何创建您自己的 API。   在本文中,我将着眼于 Compose 背后的工作原理。但在开始之前,我想要强调的是,使用 Compose 并不一定需要您理解它是如何实现的。接下来的内容纯粹是为了满足您的求知欲而撰写的。
Android 开发者
2022/09/23
2.1K0
深入详解 Jetpack Compose | 实现原理
浅析 JetPack Compose 是如何安装到View视图上
如果按照传统 View 的思维,我们不难发现,当前 content(R.id.content(FrameLayout)->) 布局中存在5层嵌套,这是极不可取的一种做法。
Petterp
2022/02/09
1.4K3
浅析 JetPack Compose 是如何安装到View视图上
Jetpack Compose+架构=优秀APP?
Jetpack Compose是Android推出的新一代声明式UI框架,Compose库是用响应式编程的方式对View进行构建,用更少更直观的代码拥有更强大的功能,同时还能提高开发速度。随着alpha版本的发布,其API也逐渐稳定,此时谁先掌握这一项新技术,谁就能在这一行业中抢占先机。
分你一些日落
2021/12/09
1.7K0
Jetpack Compose Alpha 版现已发布!
Jetpack Compose 是一个现代化的 UI 工具包,旨在帮助开发者通过原生平台 API 简单快捷地在全 Android 平台构建精美应用,它能大幅降低代码量并包含交互式工具,以及使用直观的 Kotlin API,为您的应用增添活力。现在,我们正式发布 Jetpack Compose 的 Alpha 版本,邀请您体验!
Android 开发者
2022/09/23
4.1K0
Jetpack Compose Alpha 版现已发布!
Jetpack Compose Beta 版现已发布!
我们已经推出了 Jetpack Compose Beta 版,这是我们的全新 UI 工具包,旨在帮助开发者更快速、更轻松地在所有 Android 平台构建原生应用。Compose 提供了新一代声明式的 Kotlin API,可帮助您以更少的代码构建精美、响应迅速的应用。构建该工具包的目的在于与现有 Android 应用和 Jetpack 开发库集成,您可以将 Android 视图与 Compose 相结合,按照您自己的节奏应用 Compose。
Android 开发者
2022/03/08
5.7K0
Jetpack Compose Beta 版现已发布!
深入详解 Jetpack Compose | 优化 UI 构建
人们对于 UI 开发的预期已经不同往昔。现如今,为了满足用户的需求,我们构建的应用必须包含完善的用户界面,其中必然包括动画 (animation) 和动效 (motion),这些诉求在 UI 工具包创建之初时并不存在。为了解决如何快速而高效地创建完善的 UI 这一技术难题,我们引入了 Jetpack Compose —— 这是一个现代的 UI 工具包,能够帮助开发者们在新的趋势下取得成功。
Android 开发者
2022/09/23
1.5K0
深入详解 Jetpack Compose | 优化 UI 构建
用Jetpack Compose完美复刻Flappy Bird!
Flappy Bird是13年红极一时的小游戏,其简单有趣的玩法和变态的难度形成了强烈反差,引发全球玩家竞相把玩,欲罢不能!遂选择复刻这个小游戏,在实现的过程中向大家演示Compose工具包的UI组合、数据驱动等重要思想。
用户9239674
2022/02/10
1.3K0
Jetpack Compose 将支持桌面应用开发 ?
可能在未来的某一天,Google 的工程师会使用通过 Compose 开发的 IDE 来开发 Compose 。
路遥TM
2021/08/31
1K0

相似问题

如何检测列上的新闻手势(Jetpack Compose)?

19

如何检测Jetpack Compose中变换手势的结束?

11

Jetpack compose模式抽屉打开手势

129

如何禁用测试Android Jetpack Compose的转换?

120

Jetpack Compose -禁用TextField长按处理程序

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档