我最近开始使用 Jetpack Compose。我有以下可组合项:
@Composable
fun SearchScreen(navController: NavHostController) {
Scaffold(
topBar = { SearchBar() },
content = {
Column (
modifier = Modifier.fillMaxSize()
) {
// some nested Composables
}
}
)
}
Run Code Online (Sandbox Code Playgroud)
但按原样使用此代码,其中的整个代码content = {...}都用红色下划线表示Jetpack Compose: Content padding parameter it is not used。我已经在这篇Stackoverflow 帖子中读到,实际上,PaddingValues只有在设置了 的情况下才在脚手架中提供bottomBar,这显然不是这里的情况。所以我不明白为什么我会收到这个错误。
注意:该应用程序实际上确实使用了 a BottomNavigation,但不在Composable我上面显示的范围内。难道这仍然以某种方式在这里传播吗?
我想知道如何使用 Jetpack Compose 获取屏幕宽度和高度?
除了 之外,还有什么方法可以检索屏幕尺寸吗
getWindowManager().getDefaultDisplay()?
我正在创建一个自定义,Checkbox其中Surface有Modifier.clickable:
Surface(
modifier = Modifier
.clickable(
enabled = enabled,
interactionSource = interactionSource,
indication = rememberRipple(),
role = Role.Checkbox,
onClick = { onCheckedChange(!checked) }
)
.then(modifier),
) {
Row {
Checkbox(checked = checked, onCheckedChange = {}, colors = colors)
Text(text = text ?: "")
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试构建它时,我收到错误Exception during IR lowering error:
org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /home/rene/AndroidStudioProjects/pass13/app/src/main/java/com/aresid/simplepasswordgeneratorapp/ui/widgets/Checkbox.kt
Run Code Online (Sandbox Code Playgroud)
请参阅此处的完整堆栈跟踪。
删除Modifier.clickable可以解决构建问题。
我已经尝试过升级/降级某些版本,但没有任何东西可以正常工作。
目前,我正在使用这些版本:
ext.versions = [ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 jetpack compose 中的 observeAsState 从 LiveData 获取值,但我收到一个奇怪的错误
类型 'State<List?>' 没有方法 'getValue(Nothing?, KProperty<*>)',因此它不能作为委托
@Composable
fun UserScreen(userViewModel:UserViewModel){
val items: List<User> by userViewModel.fetchUserList.observeAsState()
UserList(userList = items)
}
Run Code Online (Sandbox Code Playgroud)
class UserViewModel: ViewModel() {
private val dataSource = UserDataSource()
val fetchUserList = liveData {
emit(dataSource.dummyUserList)
}
}
Run Code Online (Sandbox Code Playgroud) 我想TextField在 Jetpack Compose 中自定义可组合项。我试图实现下图中的结果,但不知何故TextField有一些默认填充,我找不到如何更改其值。我想删除默认填充并自定义它
(右边的图像是我实现的结果。我画了一个边框,这样你就可以看到它有填充,顺便说一句,下面的TextField只是Text可组合项,它们不是TextFields)
下面是我的TextField代码
TextField(
value = "",
onValueChange = {},
modifier = Modifier
.weight(1F)
.padding(0.dp)
.border(width = 1.dp, color = Color.Red),
placeholder = {
Text(
"5555 5555 5555 5555", style = TextStyle(
color = Color.Gray
)
)
},
colors = TextFieldDefaults.textFieldColors(
backgroundColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent,
focusedIndicatorColor = Color.Transparent
),
)
Run Code Online (Sandbox Code Playgroud) 我正在使用compose-navigation(alpha09) 来处理可组合项之间的导航
我想在移动到下一个目的地时删除启动屏幕(我不希望按下后背返回启动屏幕)
以下尝试未按预期工作:
navHostController.navigate(Route.login.id) {
navHostController.graph.clear()
}
Run Code Online (Sandbox Code Playgroud)
navHostController.navigate(Route.login.id)
navHostController.graph.clear()
Run Code Online (Sandbox Code Playgroud)
val currentDest = navHostController.currentDestination
navHostController.navigate(Route.login.id)
if (currentDest != null) {
navHostController.graph.remove(currentDest)
}
Run Code Online (Sandbox Code Playgroud)
那么如何删除启动屏幕然后转到下一步呢?
android android-jetpack-navigation android-jetpack-compose jetpack-compose-navigation
我正在创建一个 Jetpack Compose 对话框,其中包含一个列,其中所有元素都应始终可见,但第三个元素除外,第三个元素是一个文本,如果文本不适合屏幕空间,则该文本应该是可滚动的。我几乎通过仅用于该文本元素的辅助可滚动列实现了这一点。但是,如果有大量文本,此实现会将底部子项(按钮)推到视图之外。这是我的代码:
@Composable
fun WelcomeView(
viewModel: WelcomeViewModel,
onDismiss: () -> Unit
) {
Dialog(onDismissRequest = onDismiss) {
Box(
modifier = Modifier
.clip(RoundedCornerShape(Spacing.extraLarge))
.background(Colors.backgroundBase)
.padding(all = Spacing.medium)
) {
Column {
IconView(
name = IconViewNames.RUNNING_SHOE,
size = IconViewSizes.LARGE,
color = Colors.primaryBase
)
Text(
viewModel.title,
style = Text.themeBillboard,
modifier = Modifier.padding(bottom = Spacing.medium)
)
Column(
modifier = Modifier
.verticalScroll(rememberScrollState())
) {
Text(
viewModel.message,
style = Text.themeHeadline,
modifier = Modifier.padding(bottom = Spacing.medium)
)
}
Button(
onClick = onDismiss,
modifier = Modifier …Run Code Online (Sandbox Code Playgroud) 我正在搜索如何在 Jetpack Compose 中创建自定义对话框。在 XML 或 Material Design 中,我们可以轻松创建自定义对话框,在其中我们可以接受用户输入、单选按钮等,但我在 Jetpack Compose 中没有找到这样的东西。
android android-alertdialog android-jetpack android-jetpack-compose android-compose-dialog
我在Jetpack Compose中创建了一个完整的应用程序。然而,其表现Lazy Column非常糟糕,而且没有任何意义。Lazy Column应该是 的替代品RecyclerView,但RecyclerView目前效果更好。
我制作了一个Lazy Column带有标题和Lazy Rows项目的项目(基本上是一个嵌套列表)。正如您所看到的,有图像,但我使用了Coil 库,因此所有内容都应该在单独的线程中加载。我已经看过这些讨论:link1,link2。但似乎这个问题还没有解决方案,尽管现在Jetpack Compose已经稳定了。
你们中有人找到了获得更好性能的方法吗?还是我应该用 来Lazy Rows代替RecyclerView?
这是页面的屏幕:
android kotlin kotlin-coroutines android-jetpack-compose coil