小编alf*_*tap的帖子

Jetpack Compose 是否像 XML 一样具有 maxHeight 和 maxWidth?

我希望有一个最初包裹内容高度的 LazyColumn,但如果它达到一定高度(232dp),那么它会修复它的高度。在 XML 中,我会结合使用 maxHeight 和wrappContent,但我在 Compose 中找不到类似的东西?

android android-jetpack-compose

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

在 Kotlin 的 Stateflow 上使用映射

通过 Viewmodel 中的 LiveData,我们可以像这样使用 switchMap 或 Transformations.map

val recipesList = cuisineType.switchMap { repository.getDisplayRecipes(it.cuisineType).asLiveData() }
Run Code Online (Sandbox Code Playgroud)

使用 StateFlow 实现此目的的最佳方法是什么?我知道我们可以像下面一样使用地图,但是这会返回 Flow<Flow<List<Recipe>>> ,这似乎不正确

val recipeListFlow = cuisineTypeStateFlow.map {
    repository.getDisplayRecipes(it.cuisineType)
}
Run Code Online (Sandbox Code Playgroud)

android viewmodel kotlin android-livedata kotlin-stateflow

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

Jetpack Compose 焦点请求器无法使用 Dialog

我正在使用下面的代码尝试将焦点请求到文本字段并显示键盘。目前,文本字段确实请求焦点,但键盘无法显示。相同的代码在我正在处理的另一个项目中工作,但这里的区别是此代码位于可组合对话框内,而其他代码不是,所以我不确定是否是对话框导致键盘无法显示?

val textField = remember { FocusRequester() }

 Dialog(onDismissRequest = {
    openDialog.value = false
    dialogInput.value = ""
}) {

    Column(
        modifier = Modifier
            .height(274.dp)
            .background(Color.Transparent)
            .clickable {
                openDialog.value = false
                dialogInput.value = ""
            }
    ) {

        OutlinedTextField(
            modifier = Modifier
                .height(64.dp)
                .background(Color.White)
                .focusRequester(textField),
            label = {
                Text(
                    text = label,
                    style = MaterialTheme.typography.body2.copy(color = Color.Black)
                )
            },
            value = dialogInput.value,
            onValueChange = {
                dialogInput.value = it
                events.filterPlayers(it)
            },
            textStyle = MaterialTheme.typography.body2.copy(color = Color.Black),
            colors = TextFieldDefaults.textFieldColors(
                backgroundColor = Color.White,
                unfocusedIndicatorColor …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

13
推荐指数
1
解决办法
3928
查看次数

为什么 jetpack compose 预览需要几分钟才能加载?

使用 Jetpack Compose 和可组合项的布局预览需要一分钟多的时间才能加载,这听起来像是我的 Android Studio 的问题还是 compose 的问题?

android android-jetpack android-jetpack-compose

9
推荐指数
1
解决办法
3606
查看次数

Jetpack Compose 矢量解析问题

我正在尝试加载向量,但不断收到此错误堆栈跟踪

 java.lang.IllegalArgumentException: Unknown command for: R
    at androidx.compose.ui.graphics.vector.PathNodeKt.toPathNodes(PathNode.kt:275)
    at androidx.compose.ui.graphics.vector.PathParser.addNode(PathParser.kt:525)
    at androidx.compose.ui.graphics.vector.PathParser.parsePathString(PathParser.kt:84)
    at androidx.compose.ui.graphics.vector.VectorKt.addPathNodes(Vector.kt:72)
    at androidx.compose.ui.graphics.vector.compat.XmlVectorParser_androidKt.parsePath(XmlVectorParser.android.kt:279)
    at androidx.compose.ui.graphics.vector.compat.XmlVectorParser_androidKt.parseCurrentVectorNode(XmlVectorParser.android.kt:101)
    at androidx.compose.ui.res.VectorResources_androidKt.loadVectorResourceInner(VectorResources.android.kt:81)
    at androidx.compose.ui.res.VectorResources_androidKt.vectorResource(VectorResources.android.kt:62)
    at androidx.compose.ui.res.VectorResources_androidKt.vectorResource(VectorResources.android.kt:52)
    at com.tapmax.football.ui.screens.design.DesignScreenKt$KitPager$1.invoke(DesignScreen.kt:440)
    at com.tapmax.football.ui.screens.design.DesignScreenKt$KitPager$1.invoke(DesignScreen.kt:439)
Run Code Online (Sandbox Code Playgroud)

我无法复制矢量的完整代码,因此我附加了一个图像,它只是一个法线矢量

在此输入图像描述

android android-jetpack-compose

9
推荐指数
1
解决办法
1521
查看次数

Jetpack Compose 显示错误的颜色

还有其他人遇到过这个吗?正如这里的照片所示,我的表面背景是白色的,但在预览和应用程序中显示的是紫色。同样适用于文本视图,它们应该是黑色和灰色,但显示为紫色。

我的代码如下

@Composable
fun EditableSettingItem(setting: EditableSetting) {
Surface(color = Color(R.color.background),
        modifier = Modifier.fillMaxWidth().height(86.dp)) {

    Column (modifier = Modifier.fillMaxHeight()) {
        Text(text = setting.settingName,
            modifier = Modifier
                .padding(start = 19.dp, top = 14.dp)
                .wrapContentSize(),
            style = TextStyle(fontFamily = FontFamily(Font(R.font.quicksand_regular)),
                fontSize = 13.sp,
                color = Color(R.color.sub_text)))

        Row(modifier = Modifier
            .padding(start = 16.dp, end = 16.dp, top = 16.dp)
            .fillMaxWidth(),
            horizontalArrangement = Arrangement.SpaceBetween) {
            Text(text = setting.action,
                modifier = Modifier.wrapContentSize(),
                style = TextStyle(fontFamily = FontFamily(Font(R.font.quicksand_regular)),
                    fontSize = 15.sp,
                    color = Color(R.color.main_text)))

            Image(painter …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

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

Flutter SigningConfig“release”缺少必需的属性“storeFile”

现在尝试使用 Flutter 构建 APK/App 捆绑包时多次遇到此问题,有人能告诉我问题是什么吗?它说我的 key.properties 文件缺少存储文件,但它肯定存在并且 100% 正确的路径

我的构建等级:

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

  signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
        storePassword keystoreProperties['storePassword']
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 key.properties 文件(位于 flutter 项目的 android 文件夹中):

storePassword=******
keyPassword=******
keyAlias=*****
storeFile=/Users/user/keystore/my_app/*****.jks
Run Code Online (Sandbox Code Playgroud)

flutter

6
推荐指数
1
解决办法
3630
查看次数

Jetpack Compose 水平对齐问题

在此输入图像描述

我需要将图像和文本视图定位到卡片的开头,并将子列水平居中对齐,但是正如您从照片中看到的那样,该列以某种方式拉伸了放置图像的屏幕的宽度,文本视图位于中心。任何人都可以看到我的代码有任何问题吗?

@Composable
fun TrainerCard(profile: TrainerProfile) {
Card(modifier = Modifier
    .height(180.dp)
    .fillMaxWidth()
    .padding(4.dp)) {
    Column(modifier = Modifier
        .fillMaxHeight()
        .width(120.dp)
        .border(1.dp, color = Color.Red),
        horizontalAlignment = Alignment.CenterHorizontally) {
        Image(
            modifier = Modifier
                .size(120.dp)
                .padding(top = 4.dp, start = 4.dp),
            painter = painterResource(R.drawable.pokepals_logo),
            contentDescription = null
        )
        Text(
            text = profile.trainerName,
            style = MaterialTheme.typography.subtitle1)
        }
    }
}    
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

4
推荐指数
1
解决办法
2492
查看次数

Jetpack Compose 约束布局约束不链接

我正在将 constrainAs 与 Jetpack Compose 结合使用,以将 wifi 选项列表约束到父视图的顶部,然后约束到文本视图的底部。从照片中可以看出,我的列表没有被限制在父级的顶部或它下面的 textview,它甚至被向上推离屏幕?

作为参考,'list' 是 wifi 选项列表,'text1' 是以“Select your wifi”开头的文本视图

在此处输入图片说明

@Composable
fun ScanWifiScreen(wifiList: List<WifiOption>, onClick: (WifiOption) -> Unit) {
ConstraintLayout(
    modifier = Modifier
        .fillMaxSize()
        .background(colorResource(id = R.color.background))
) {

    val (list, text1, text2, progressIndicator) = createRefs()

    WifiList(
        wifiOptions = wifiList,
        onClick = onClick,
        modifier = Modifier
            .constrainAs(list) {
                top.linkTo(parent.top, margin = 8.dp)
                bottom.linkTo(text1.top)
                start.linkTo(parent.start)
                end.linkTo(parent.end)
            }
            .background(colorResource(id = R.color.background))
            .fillMaxHeight())

    Text(
        text = stringResource(id = R.string.select_wifi),
        modifier = Modifier
            .wrapContentSize()
            .padding(bottom = 16.dp)
            .constrainAs(text1) …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-jetpack-compose

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

Jetpack Compose 的collectAsState 问题

我正在使用 Compose CollectAsState() 函数从此 StateFlow 收集

val _authToken = MutableStateFlow(AuthToken("", 0))
val authToken: StateFlow<AuthToken> = _authToken
val authToken by loginViewModel.authToken.collectAsState() // this returns AuthToken which is fine.
Run Code Online (Sandbox Code Playgroud)

但是,当使用 stateIn 运算符将冷流转换为状态流然后使用collectAsState() 时,它会返回对象的状态版本,这很奇怪,然后我需要在collectAsState() 上调用.value 来检索它。

有谁知道为什么会发生这种情况?

val user = repository.getUser(viewModelScope).stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), null)
val user = profileViewModel.user.collectAsState() // returns State<User>
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

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

Kotlin 结合了 2 个以上的流程

我希望结合 4 个 StateFlow 值并从中生成 1 个 StateFlow。我已经知道像这样的组合函数:

val buttonEnabled = cameraPermission.combine(micPermission) {
    //some logic
}
Run Code Online (Sandbox Code Playgroud)

这怎么能用 4 个流来完成?当我尝试下面的操作时,我收到错误,参数太多,但是组合函数文档确实说您最多可以添加 5 个流?

val buttonEnabled = cameraPermission.combine(micPermission, locationPermission, contactsPermission) {

}
Run Code Online (Sandbox Code Playgroud)

android flow stateflow kotlin

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

Firebase 数据库不在控制台中显示任何数据

我正在尝试在 firebase 控制台上查看当前实时数据库的数据,但它显示为空。我肯定会正确写入数据库,因为当我使用 setValue 函数时,下面的侦听器会返回正确的信息。有谁知道在 firebase 控制台上反映是否只需要几个小时,或者我在这里缺少什么?

    firebaseAuth.currentUser?.uid?.let {
        db.getReference("users").child(it).addValueEventListener(object : ValueEventListener {
            override fun onDataChange(snapshot: DataSnapshot) {
                val user = snapshot.getValue(User::class.java)
                Log.d("username", user?.username.toString())
                Log.d("favSport", user?.favouriteSport.toString())
            }

            override fun onCancelled(error: DatabaseError) {
                TODO("Not yet implemented")
            }

        })
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

android kotlin firebase firebase-realtime-database

0
推荐指数
1
解决办法
1923
查看次数