问题标签 [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.
android - 如何在 Jetpack Compose 的 Surface 中显示图像?
有没有人有使用 Jetpack Compose 小部件 Surface 将 xml 形状显示为背景的解决方案?
我需要使用 DrawImage,还是有更简单的方法?
在下面的示例中,我想Color.Blue
与一个名为 xml 的文件进行交换,该文件side_nav_bar.xml
实际上是使用创建的渐变<shape> </shape>
我想用作背景的 xml:
RG
android - 如何从 onScrollPositionChanged 回调中更改 VerticalScroller 的 scrollerPosition?
如下面的代码所示,我有一个回调,我想收集VerticalScroller
' 的位置,但如果我这样做,VerticalScrollers 小部件将不再滚动,因为在源代码中VerticalScroller
,初始回调调用VerticalScroller
's scrollerPosition
。从我想使用它的回调中无法访问此值。有没有一种快速的方法来调用scrollerPosition
或使滚动行为继续?(不创建递归“竞争”条件?)
--- compose源码中VerticalScroller Widget的定义:
android - Android Jetpack 组合。使用堆栈布局
有谁知道如何使用可组合的 Stack 布局?我知道,它必须与我们都知道的 RelativeLayout 类似。但是,我没有得到我需要的结果。不是将一个视图绘制在另一个视图之上,而是第一个完全覆盖第二个(或第二个根本不绘制)。我试图在工具栏的中心放置一个文本,并在屏幕右侧放置一个按钮。
android - Jetpack Compose 内部设计:为什么要在 Canvas 上绘制,而不是重用原生视图?
这个问题建立在:jetpack compose 如何在幕后工作
Jetpack Compose 基于AndroidComposeView
它继承自ViewGroup
Compose 自己的小部件树并充当其根。因此,整个树可以集成到现有视图中,但单个节点不是 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 开发更加分散。
android - Android @Compose 如何处理 Android 中的屏幕大小和方向
Android @Compose 如何处理 Android 中的屏幕大小和方向。谷歌搜索后我无法找到合适的答案。有人可以回答这个问题。
android - 在 Jetpack @Compose 函数中使用 LiveData 作为状态
我想LiveData<List<DataClass>>
在 @Composable 函数中使用 a 作为我的状态源。
我不能使用新的@Model 注释,我在这个谈话链接中看到(在 32:06)可以通过调用函数来使用 LiveData、Flow 等+observe(/* Data */)
。
问题:我找不到视频中使用的函数 (+observe()) 或任何其他使用 LiveData 作为来源的方式。如何在 @Compose 函数中使用 LiveData?
项目分级:
应用程序等级:依赖项:
android - 模型中列表的值已更新,但未反映可组合功能
我正在创建使用带有 mvvm 的 jetpack compose 的演示项目,我创建了包含用户列表的模型类。这些用户显示在列表中,顶部有一个按钮,单击时将新用户添加到列表中...当用户单击按钮时,lambda 更新有关它的活动,并且活动调用 viewmodel,它将数据添加到列表并使用 livedata 更新回活动,现在在模型收到新数据后,它不会更新关于它的可组合函数,因此 ui列表未更新..这是代码
活动
视图模型
可组合函数
完整的源代码可在此处获得
我不确定我是不是做错了什么,还是因为 jetpack compose 仍处于开发人员预览版中,所以非常感谢您的帮助.. 谢谢
android - 如何从 Jetpack Compose TextField 关闭虚拟键盘?
我正在使用 Jetpack Compose TextField
,我想在用户按下操作按钮(imeActionPerformed
参数)时关闭虚拟键盘。
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上发现了一个相关问题