在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

2024-05-20

在 Jetpack Compose 中迈出第一步,这非常令人惊奇,除了一个恼人的问题。

我有一组固定的预览:正常、深色和 RTL:

@Preview(
    name = "Normal",
    group = "Screen",
    showBackground = true
)
@Preview(
    name = "Dark",
    group = "Screen",
    showBackground = true,
    uiMode = Configuration.UI_MODE_NIGHT_YES
)
@Preview(
    name = "RTL",
    group = "Screen",
    showBackground = true,
    locale = "iw"
)
@Composable
fun JustAComposable() {
   ...
}

举个例子,我预览了 50 个可组合函数。我需要将这个集合复制粘贴 50 次,这是绝对不正确的。

注释继承是被禁止的,所以我的问题是:是否有人找到了在所有可组合函数中重用同一组预览的方法?

我能想到的唯一的两个解决方案是:

  • 使用多个自定义预览only发展的同时。
  • 部分重用预览 - 使用名称和组的编译时常量。

Edit:

我创建了一个功能请求来组成团队,以便能够创建自定义注释并使用我想要重用的所有预览来注释注释。

这样我只需要使用我的自定义注释。

可以追踪到谷歌问题跟踪器 https://issuetracker.google.com/issues/198165617


已接受的功能请求现已实现,并可从 Android Studio Dolphin 和 Jetpack Compose 1.2.0-beta01 开始使用。

它被称为多重预览注释。有关此功能的更多信息可以在这里找到的。 https://developer.android.com/jetpack/compose/tooling#preview-multipreview

为了使用此功能,您必须创建一个自定义注释类。

@Preview(
    name = "small font",
    group = "font scales",
    fontScale = 0.5f
)
@Preview(
    name = "large font",
    group = "font scales",
    fontScale = 1.5f
)
annotation class FontScalePreviews

现在您可以应用这个注释类。例如:

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

在 Jetpack Compose 中跨可组合函数重复使用一组预览注释 的相关文章

随机推荐

  • 如何在React中的Material-UI选择框中设置默认值?

    我在用选择框 https material ui com demos selects 来自材料用户界面 我想显示默认选择的 选择值 选项 但之后用户无法选择此选项
  • 具有子列表属性映射问题的自动映射器

    我有以下型号 Models public class Dish Required public Int64 ID get set Required public string Name get set Required public str
  • RSA OAEP、Golang 加密、Java 解密 -BadPaddingException:解密错误

    我正在尝试解密使用 RSA OAEP 在 Golang 中加密的字符串 但出现 BadPaddingException 解密错误 很难弄清楚我错过了什么 这是Golang加密方法 func encryptString rootPEM io
  • jq中如何分组?

    这是 json 文档 name bucket1 clusterName cluster1 name bucket2 clusterName cluster1 name bucket3 clusterName cluster2 name bu
  • 按百分比设置 bootstrap 模态身高

    我正在尝试制作一个带有主体的模态 当内容变得太大时 该主体会滚动 但是 我希望模式能够响应屏幕尺寸 当我将最大高度设置为 40 时 它没有任何效果 但是 如果我将最大高度设置为 400px 它会按预期工作 但不会响应 我确信我只是错过了一些
  • 如何在 Zend MVC 中实现 SSL

    我之前已经通过使用特定的安全文件夹 例如服务器上的 https 文件夹与 http 文件夹 实现了安全页面 我已经开始使用 Zend Framework 并希望应用程序的某些部分 例如登录 使用 https 我在谷歌上搜索过 甚至在这里搜索
  • Azure VM 上的 MongoDb 连接超时

    将我的 Azure Web 应用程序连接到 Azure VM 上托管的 MongoDb 时 我遇到一些超时问题 2015 12 19T15 57 47 330 0100 I NETWORK Socket recv errno 10060 A
  • 基本的多对多sql选择查询

    我认为这应该很容易 但它却在逃避我 我的帐户和帐户组之间存在多对多关系 一个帐户可以位于零个或多个组中 因此我使用标准连接表 Accounts ID BankName AcctNumber Balance AccountGroups ID
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • Facebook PHP SDK - 如何获取访问令牌?

    我正在尝试从我的应用程序在用户的 Facebook 墙上发帖 用户授予应用程序在他的墙上发布的权限 并且我在数据库中有用户ID 我需要自动发送帖子 而无需用户再次登录 我的代码是 try require once dirname FILE
  • 以编程方式将 TextView 添加到主屏幕小部件

    我想以编程方式将文本视图控件添加到我的主屏幕小部件 在下面的示例中 我使用 TextView 填充 Linearlayout 但是这里应该如何使用 RemoteView 它只接受 xml 资源布局作为参数 public class MyWi
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 客户端 Javascript 应用程序 - 不带哈希标签的 url 路由

    我正在使用最新版本的 Ember js 开发一个新的仅客户端应用程序 有一个 PHP 页面可以构建脚本 CSS 模板文件等 并将其全部传递到 index php 中 我使用 htaccess 指令 以便所有请求都重写到 index php
  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • 条件和分组 mutate dplyr

    假设我有以下每个抽屉库存增加的数据 gt socks year drawer nbr sock total 1990 1 2 1991 1 2 1990 2 3 1991 2 4 1990 3 2 1991 3 1 我想要一个二进制变量来标
  • 设置了 server.contextPath 的 Spring Boot 与通过 Eureka Server 访问 hystrix.stream 的 URL

    我有运行 Turbine 实例的 Eureka Server 以及连接到它的一些发现客户端 一切正常 但如果我注册一个发现客户端server contextPath设置后 它没有被识别InstanceMonitor涡轮流无法结合其hystr
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • Kinesis Firehose 的 Lambda.InvokeAccessDenied

    我正在尝试使用 Firehose 传输流设置 Lambda 转换 我为 Firehose 定义了一个 IAM 角色 其中包括以下策略文档 Statement Action lambda InvokeFunction lambda GetFu
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre