我有一列 TextFields,类似于:
Column {
TextField(
value = ...,
onValueChange = { ... },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.next),
)
TextField(
value = ...,
onValueChange = { ... },
keyboardOptions = KeyboardOptions(imeAction = ImeAction.next),
)
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
我希望当用户按 Tab 或键盘上的下一个按钮时,每个 TextField 上的焦点移动到下一个。当前按 Tab 键会在 TextField 中插入一个选项卡。按下一步按钮不会执行任何操作。我可以为每个 TextField 创建一个 FocusRequester 并设置 KeyboardActions onNext 以请求将焦点放在每个 TextField 的下一个字段上。这有点乏味,而且它没有解决 Tab 行为。
android android-jetpack-compose android-jetpack-compose-text
我试图拥有一个高度至少为 160 dp 的元素,但会缩放以在可能的情况下使用所有可用空间。我想,也许这比我想象的要困难。
以下内容不起作用,但也许它传达了我想做的事情的想法。
Column(modifier = Modifier.verticalScroll(rememberScrollState()).fillMaxSize) {
Box(modifier = Modifier.weight(1f).sizeIn(minHeight = 160.dp))
Box(modifier = Modifier.height(600.dp))
}
Run Code Online (Sandbox Code Playgroud)
当内容不适合屏幕时,我希望内容可以滚动,并且第一个框的高度为 160 dp。如果屏幕超过 760 dp,我希望第一个框填充尽可能多的空间,而不需要滚动。
我正在将一些代码从使用 Java 8 转换LocalDatetime为使用该版本kotlinx-datetime,但我找不到任何格式化方法。具体来说,我正在替换FormatStyle.MEDIUM. 它们不存在并且我需要编写格式吗?
这是针对 Android 应用程序的。有没有我可以使用的 Android 特定库?或者我可以使用 Java 8 之前的方法来保持对旧版本 Android 的支持吗?
编辑(我的解决方案基于 Arvind 的答案):
fun Instant.toDateTimeString(formatStyle: FormatStyle = FormatStyle.MEDIUM): String {
val localDatetime = toLocalDateTime(TimeZone.currentSystemDefault())
val formatter = DateTimeFormatter.ofLocalizedDateTime(formatStyle)
return formatter.format(localDatetime.toJavaLocalDateTime())
}
Run Code Online (Sandbox Code Playgroud) 文档似乎认为按钮应该全部大写https://developer.android.com/reference/kotlin/androidx/compose/material/Typography#button但实际上并非如此。(使用 1.0.0-beta01)
如何更改我的主题以使按钮文本大写?
我会尝试做一些 ASCII 艺术来描述这个问题:
<--------------------------------------\
DestinationA --> DestinationC ---------> DestinationE
DestinationB ------/ \-----> DestinationD --/
Run Code Online (Sandbox Code Playgroud)
我希望这是可以解读的。可以从目的地 A 和 B 到达 C。可以从 C 和 D 到达 E。E 返回到 A 或 B(以返回堆栈中的为准)。目的地 C、D 和 E 采用参数 (id)。
实现这一点的最佳方法是什么?使用嵌套导航图看起来是可能的。
以下内容有效,但感觉更像是一种解决方法,而不是导航组件的预期工作方式。
<--------------------------------------\
DestinationA --> DestinationC ---------> DestinationE
DestinationB ------/ \-----> DestinationD --/
Run Code Online (Sandbox Code Playgroud)
NavHost 目前的使用情况是:
val destination = navController.getBackStackEntry("DestinationC/{id}").destination
navController.popBackStack(destination.id, true)
Run Code Online (Sandbox Code Playgroud)