问题标签 [android-jetpack-compose]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3906 浏览

android - 如何在 Jetpack Compose 的 Surface 中显示图像?

有没有人有使用 Jetpack Compose 小部件 Surface 将 xml 形状显示为背景的解决方案?

我需要使用 DrawImage,还是有更简单的方法?

在下面的示例中,我想Color.Blue与一个名为 xml 的文件进行交换,该文件side_nav_bar.xml实际上是使用创建的渐变<shape> </shape>

我想用作背景的 xml:

RG

0 投票
1 回答
309 浏览

android - 如何从 onScrollPositionChanged 回调中更改 VerticalScroller 的 scrollerPosition?

如下面的代码所示,我有一个回调,我想收集VerticalScroller' 的位置,但如果我这样做,VerticalScrollers 小部件将不再滚动,因为在源代码中VerticalScroller,初始回调调用VerticalScroller's scrollerPosition。从我想使用它的回调中无法访问此值。有没有一种快速的方法来调用scrollerPosition或使滚动行为继续?(不创建递归“竞争”条件?)

--- compose源码中VerticalScroller Widget的定义:

0 投票
1 回答
5084 浏览

android - Android Jetpack 组合。使用堆栈布局

有谁知道如何使用可组合的 Stack 布局?我知道,它必须与我们都知道的 RelativeLayout 类似。但是,我没有得到我需要的结果。不是将一个视图绘制在另一个视图之上,而是第一个完全覆盖第二个(或第二个根本不绘制)。我试图在工具栏的中心放置一个文本,并在屏幕右侧放置一个按钮。

0 投票
1 回答
1770 浏览

android - Jetpack Compose 内部设计:为什么要在 Canvas 上绘制,而不是重用原生视图?

这个问题建立在:jetpack compose 如何在幕后工作

Jetpack Compose 基于AndroidComposeView它继承自ViewGroupCompose 自己的小部件树并充当其根。因此,整个树可以集成到现有视图中,但单个节点不是 Android 视图。Android 视图和 Compose UI 小部件之间的过渡非常明显:为 Compose 重新实现了一些关键类(如 Canvas),并且 Compose 的 UI 小部件(当前)在布局检查器中不可见。

Jetpack Compose 将其小部件渲染到画布上,并使用一些巧妙的技巧来应用状态更改。据我了解,这与现有的布局引擎完全正交,您不应该在本机视图和撰写小部件之间来回切换。 这将与 SwiftUI 形成鲜明对比

SwiftUI 与所有 Apple 平台上的现有 UI 框架无缝协作。例如,您可以将 UIKit 视图和视图控制器放置在 SwiftUI 视图中,反之亦然。

我对 iOS 方面的知识几乎一无所知。也许 UIkit 更适合与 SwiftUI 交互。但如果情况并非如此,并且 Jetpack Compose 与原生小部件的分离不是由内部约束强加的,那么这似乎是一个奇怪的设计决定。

现在,我的问题是:为什么 Jetpack Compose 基于自己的渲染路径(基于自定义 Canvas 实现),而不是以某种方式重新使用原生视图?这是否具有隐藏的优势,或者根本不可能将现有视图转变为反应式编程模式?在我看来,从长远来看,这似乎会促进潜在的多平台努力,但在短期内会导致 App 开发更加分散。

0 投票
3 回答
4007 浏览

android - Android @Compose 如何处理 Android 中的屏幕大小和方向

Android @Compose 如何处理 Android 中的屏幕大小和方向。谷歌搜索后我无法找到合适的答案。有人可以回答这个问题。

0 投票
4 回答
14899 浏览

android - 在 Jetpack @Compose 函数中使用 LiveData 作为状态

我想LiveData<List<DataClass>>在 @Composable 函数中使用 a 作为我的状态源。

我不能使用新的@Model 注释,我在这个谈话链接中看到(在 32:06)可以通过调用函数来使用 LiveData、Flow 等+observe(/* Data */)

问题:我找不到视频中使用的函数 (+observe()) 或任何其他使用 LiveData 作为来源的方式。如何在 @Compose 函数中使用 LiveData?

项目分级:

应用程序等级:依赖项:

0 投票
2 回答
4536 浏览

android - 模型中列表的值已更新,但未反映可组合功能

我正在创建使用带有 mvvm 的 jetpack compose 的演示项目,我创建了包含用户列表的模型类。这些用户显示在列表中,顶部有一个按钮,单击时将新用户添加到列表中...当用户单击按钮时,lambda 更新有关它的活动,并且活动调用 viewmodel,它将数据添加到列表并使用 livedata 更新回活动,现在在模型收到新数据后,它不会更新关于它的可组合函数,因此 ui列表未更新..这是代码

活动

视图模型

可组合函数

完整的源代码可在此处获得

我不确定我是不是做错了什么,还是因为 jetpack compose 仍处于开发人员预览版中,所以非常感谢您的帮助.. 谢谢

0 投票
6 回答
13239 浏览

android - 如何从 Jetpack Compose TextField 关闭虚拟键盘?

我正在使用 Jetpack Compose TextField,我想在用户按下操作按钮(imeActionPerformed参数)时关闭虚拟键盘。

0 投票
5 回答
7896 浏览

android - Kotlin Compose,在行中对齐项目

我正在使用新品牌 KotlinCompose作为我的视图,我有一排有 2 件物品,我怎样才能让它们center-vertical像一样?

在此处输入图像描述

请注意,如果没有填充,它们也不会对齐。

0 投票
1 回答
966 浏览

android - 如何在 AS 4.0 中使用 Retrofit 的挂起功能并启用 compose?

我正在做一个实验项目,我在 Android Studio 4.0 中使用 jetpack compose 和 Retrofit 的协程支持。

这是我的顶级gradle.build

这是应用程序模块build.gradle

最后是我有问题的改造 api 服务接口:

每当我尝试调用此登录方法时,我都会得到:

但是当我尝试将我的登录方法更改为像这样的非暂停传统版本时:

然后一切正常。

这似乎与 AS4.0 的 IR 编译器有关。有没有人为此找到一些解决方法?

编辑:我可能在 Retrofit 的跟踪器https://github.com/square/retrofit/issues/3233 和谷歌的跟踪器 https://issuetracker.google.com/issues/143468771上发现了一个相关问题