小编Wil*_*ran的帖子

在 Jetpack Compose 中将 Drawable 实例设置为 Image

在 Jetpack Compose 中,谁能告诉我有没有办法将 Drawable 对象分配给 Image compose 视图?

我把应用程序安装在 Android 设备上。我得到一个类型为 Drawable 的图标,我想在 Image 中使用它

val icon: Drawable = packageInfor.applicationInfo.loadIcon(packageManager)
Run Code Online (Sandbox Code Playgroud)

我发现有3个函数可以分配图像

  • 来自画家 (IdRes)
  • 来自图像位图
  • 来自图像向量

在此输入图像描述

综上所述,我不知道如何分配一个 Drawable 实例。

android kotlin android-jetpack android-jetpack-compose

17
推荐指数
3
解决办法
1万
查看次数

Jetpack Compose 折叠工具栏

我找不到有关此事的任何文档,是否有类似于CollapsingToolbarCompose 中的内容?

我发现的只是这里提到了它,但没有关于如何设置它

android kotlin android-jetpack android-jetpack-compose

7
推荐指数
4
解决办法
2296
查看次数

Jetpack Compose - 在配置更改时保留 AndroidView 的状态

很可能是一个新手问题,因为我对 Android 开发相当陌生 - 我在配置更改/导航时在 @Composable 中保留 AndroidView 的状态时遇到麻烦,因为工厂块被调用(如预期)并且我的图表被重新实例化。

@Composable
fun ChartView(viewModel:ViewModel, modifier:Modifier){
    val context = LocalContext.current
    val chart = remember { DataChart(context) }

    AndroidView(
        modifier = modifier,
        factory = { context ->
            Log.d("DEBUGLOG", "chart init")
            chart
        },
        update = { chart ->
            Log.d("DEBUGLOG", "chart update")
        })
}
Run Code Online (Sandbox Code Playgroud)

DataChart是一个带有复杂图表的第三方组件,我想保留缩放/滚动状态。我知道我可以使用 ViewModel 来保留 conf 中的 UI 状态。更改,但考虑到保存缩放/滚动状态的复杂性,我想问是否有其他更简单的方法来实现这一点?

我尝试将整个图表实例移动到 viewModel,但由于它使用上下文,我收到有关上下文对象泄漏的警告。

任何帮助,将不胜感激!

android android-jetpack-compose

7
推荐指数
1
解决办法
6000
查看次数

Jetpack Compose 相当于 InputFilter?

我正在寻找 Jetpack Compose TextField 中 EditText 的 InputFilter 的等效方法。

因为我试图阻止用户输入不需要的值,%@*()-例如字符。

android kotlin android-jetpack android-jetpack-compose android-jetpack-compose-text

5
推荐指数
1
解决办法
2917
查看次数

TickerProviderStateMixin 和 SingleTickerProviderStateMixin 之间的区别?

当我使用 AnimationController 时,它需要一个 vsync 参数。我研究过,我应该使用TickerProviderStateMixinSingleTickerProviderStateMixin,目前我仍然不知道它们之间有什么区别。谢谢您给我一个解释。参考文献: https://api.flutter.dev/flutter/widgets/SingleTickerProviderStateMixin-mixin.html https://api.flutter.dev/flutter/widgets/TickerProviderStateMixin-mixin.html

flutter flutter-animation

5
推荐指数
1
解决办法
7189
查看次数

在 Jetpack Compose 中设置负填充值的替代解决方案?(java.lang.IllegalArgumentException:填充必须是非负数)

我试图为填充修饰符分配一个负值,但应用程序崩溃了。看看我的代码。谢谢你,如果你能帮助或给我一个替代的解决方案

在我的示例中,我分配Modifier.padding(horizontal = 16.dp)给父组件 (LazyColum)。但我希望第一个孩子(图像)Modifier.padding(horizontal = -16.dp)填满屏幕的整个宽度。相反,我必须将每个padding值分配给每个孩子。

崩溃日志: java.lang.IllegalArgumentException: Padding must be non-negative

在此处输入图片说明

代码片段

LazyColumn(modifier = Modifier.padding(16.dp), state = lazyListState) {
    item {
        Image(
            modifier = Modifier
                .fillMaxWidth()
                .padding(-16.dp) // Crashed here!
                .height(200.dp),
            painter = painterResource(id = puppy.artwork),
            contentDescription = "Puppy ArtWork",
            contentScale = ContentScale.Crop
        )
    }
    item {
        Row(
            modifier = Modifier
                .padding(horizontal = 16.dp)
                .padding(top = 16.dp)
        ) {
            Text(text = puppy.name, style = MaterialTheme.typography.h4)
            Spacer(modifier = Modifier.weight(1f))
            Price(puppy.pricePerHour)
        }
    }
    item …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack android-jetpack-compose

3
推荐指数
2
解决办法
591
查看次数