我正在学习Kotlin和Jetpack的作曲,并按照https://developer.android.com/codelabs/basic-android-kotlin-compose-add-images的教程学习.背景图像显示在预览中,但当我在模拟器或物理设备上运行应用程序时,背景图像不显示.

以下是我的代码:

package com.example.happybirthday

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.example.happybirthday.ui.theme.HappyBirthdayTheme

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            HappyBirthdayTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                )
                {
                    GreetingText(
                        message = "Happy Birthday Sam!",
                        from = "From Emma"
                    )
                }
            }
        }
    }

    @Composable
    fun GreetingText(message: String, from: String, modifier: Modifier = Modifier) {
        Column(
            verticalArrangement = Arrangement.Center,
            modifier = modifier)
        {
            Text(
                text = message,
                fontSize = 50.sp,
                lineHeight = 60.sp,
                textAlign = TextAlign.Center
                )
            Text(
                text = from,
                fontSize = 24.sp,
                modifier = Modifier
                    .padding(16.dp)
                    .align(alignment = Alignment.End)

            )
        }
    }

    @Composable
    fun GreetingImage(message: String, from: String) {
        val image = painterResource(R.drawable.androidparty)
        Box (modifier = Modifier
            .fillMaxSize()) {
            Image(
                painter = image,
                contentDescription = null,
                contentScale = ContentScale.Crop,
                alpha = 0.5F
            )
            GreetingText(
                message = message,
                from = from,
                modifier = Modifier
                    .fillMaxSize()
                    .padding(8.dp)
            )
        }
    }


    @Preview(showBackground = true)
    @Composable
    fun BirthdayCardPreview() {
        HappyBirthdayTheme {
            GreetingImage(
                message = "Happy Birthday Sam!",
                from = "From Emma"
            )
        }
    }
}

有人能告诉我为什么图像不显示在设备上.

推荐答案

@Preview函数中,您调用的是GreetingImage函数,但在OnCreate函数中,您只调用GreetingText函数.相反,您需要在OnCreate函数中调用GreetingImage函数.

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        HappyBirthdayTheme {
            // A surface container using the 'background' color from the theme
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colorScheme.background
            )
            {
                GreetingImage(
                    message = "Happy Birthday Sam!",
                    from = "From Emma"
                )
            }
        }
    }
}

Android相关问答推荐

如何自定义所选的NavigationBar项目?

ENV变量在gradle进程中没有更新

有没有办法知道每台安卓设备上的通知限制?

Android compose ,在图像中zoom 而不裁剪?

为什么当我在装有Firebase的安卓系统中登录苹果时,收到的邮箱为空?

警告:应用必须面向 Android 13(API 级别 33)或更高版本.确实如此

kotlin中&&和and的区别

如何将DrawableId参数传递给XML布局?

相机2问题:设置AE区域、AF区域和AWB区域.

为什么我收到这个错误我需要安装 android studio

围绕动态大小的内容包装 Jetpack Compose Row?

浏览器未命中断点判断 USB 连接设备

NFC getNdefMessage 在 Android 13 上写入标签后返回 null

当手表与手机断开连接时,有没有办法在我的 Wear OS 应用程序中显示操作系统级别的图标?

未解决的参考:pagerTabIndicatorOffset

如果 auth 失败,如何显示 toast jetpack compose firebase if else @Composable 调用只能在 @Composable 函数的上下文中发生

Jetpack Compose 部分或开放侧边框

如何使用 Jetpack Compose 制作两个圆圈

如何在 Jetpack Compose 中为中心对齐设置动画?

在jetpack compose中将图像添加到脚手架顶部栏