小编Pan*_*All的帖子

Jetpack Compose - 居中文本

我正在使用 Jetpack Compose 创建一个简单的闪存卡。这个想法是你点击闪存卡,它会给你答案。但是,我被困在一个基本问题上。

不幸的是......我什至找不到官方文档,所以我的学习风格一直相信自动更正系统......

无论如何,我相信问题出在 Box() 或 Text() 上。我为盒子的重力添加了一个 Align.CenterEnd 。但是,这似乎是框居中的唯一方法。另一方面, Text() 没有提供任何方法来这样做(它有重力,但似乎没有改变任何东西)

方向正确的手将是惊人的。

附带说明一下,我知道这将提供免费答案。但是我将如何在点击时更改 $question 的文本。正如我所认为的 Composables 刷新?...因此,应该在屏幕上重新生成?也许不吧?

谢谢!

 val typography = MaterialTheme.typography

        val context = ContextAmbient.current
        var question = "How many Bananas should go in my Smoothie?"


        Column(modifier = Modifier.padding(30.dp).then(Modifier.fillMaxWidth())
                .then(Modifier.wrapContentSize(Alignment.Center))
                .clickable(onClick = { Toast.makeText(context, "3 Bananas are needed!", Toast.LENGTH_LONG).show()} ) /*question = "3 Bananas required"*/
                .clip(shape = RoundedCornerShape(16.dp))) {
            Box(modifier = Modifier.preferredSize(350.dp)
                    .gravity(align = Alignment.CenterHorizontally)
                    .border(width = 4.dp, color = Gray, shape = RoundedCornerShape(16.dp)),
            shape = …
Run Code Online (Sandbox Code Playgroud)

android android-layout kotlin android-jetpack-compose

5
推荐指数
3
解决办法
6328
查看次数

Jetpack Compose 在方向改变时保存状态

我正在使用 Android Jetpack 的 Compose,并且一直在尝试弄清楚如何保存方向更改的状态。

我的思路是让一个类成为一个 ViewModel。因为当我使用 Android 的传统 API 时,这通常有效。

当信息发生更改时,我使用了 remember {} 和 mutableState {} 来更新 UI。请验证我的理解是否正确...

记住 = 保存变量并允许通过 .value 访问,这允许缓存值。但它的主要用途是在更改时不重新分配变量。

mutableState = 在发生变化时更新变量。

许多博客文章都说要使用@Model,但是,在尝试该方法时,导入会出错。所以,我添加了一个: ViewModel()

但是,我相信我记得 {} 阻止它按预期工作?

我能在正确的方向上得到一个点吗?

@Composable
fun DefaultFlashCard() {

    val flashCards = remember { mutableStateOf(FlashCards())}
    

    Spacer(modifier = Modifier.height(30.dp))

    MaterialTheme {


        val typography = MaterialTheme.typography
        var question = remember { mutableStateOf(flashCards.value.currentFlashCards.question) }



        Column(modifier = Modifier.padding(30.dp).then(Modifier.fillMaxWidth())
                .then(Modifier.wrapContentSize(Alignment.Center))
                .clip(shape = RoundedCornerShape(16.dp))) {
            Box(modifier = Modifier.preferredSize(350.dp)
                    .border(width = 4.dp,
                            color = Gray,
                            shape = RoundedCornerShape(16.dp))
                    .clickable( …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-viewmodel android-jetpack android-jetpack-compose

1
推荐指数
2
解决办法
3861
查看次数