我正在尝试学习 android jetpack compose 中的文本字段,所以我在屏幕上有两个文本字段,当我在第一个文本字段中输入内容时,我想在单击屏幕上的空格时关闭键盘。我正在使用
.pointerInput(Unit) {
detectTapGestures(onTap = {
focusManager.clearFocus()
})
}
Run Code Online (Sandbox Code Playgroud)
这行代码可以工作,但对于像 10 文本字段这样的多文本字段不起作用,例如,当我单击 8.textfield 时,底部屏幕看起来是黑色的。我不知道为什么它是黑色的?任何想法?
@Composable
fun KeyboardSample(){
val focusManager = LocalFocusManager.current
Column(
modifier = Modifier
.fillMaxSize()
.pointerInput(Unit) {
detectTapGestures(onTap = {
focusManager.clearFocus()
})
}
.padding(start = 16.dp, end = 16.dp),
) {
var name by rememberSaveable { mutableStateOf("") }
val updateName = { _name : String ->
name = _name
}
var amount by rememberSaveable { mutableStateOf("") }
val updateAmount = { _amount : String -> …Run Code Online (Sandbox Code Playgroud) 我的项目有入门屏幕,它工作正常,但我只想向用户展示一次,并且我使用了它的共享首选项,在调试项目时,它会抛出类似 logcat 中的错误,
列表不包含与谓词匹配的元素。
,在 Android 模拟器中我可以看到主屏幕,但应用程序崩溃很快,当我在模拟器上再次打开应用程序时,登录屏幕仅显示 1 秒并打开主屏幕,而不是应用程序崩溃,我不知道为什么?我猜问题是因为这行代码,
if (!sharedPreferences.getBoolean("firstTime", true)) {
navController.navigate("main")
}else{
Run Code Online (Sandbox Code Playgroud)
但我不确定。
主屏幕:
@Composable
fun MainScreen(
navController: NavController,
) {
Column(
Modifier
.fillMaxSize()
,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(
"WELCOME TO",
modifier = Modifier
.width(300.dp)
,
textAlign = TextAlign.Start,
fontSize = 15.sp,
color = custom,
fontWeight = FontWeight.Medium
)
}
Run Code Online (Sandbox Code Playgroud)
导航:
@OptIn(ExperimentalPagerApi::class)
@Composable
fun NavScreen(
sharedPreferences: SharedPreferences
) {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "onBoard") {
composable("onBoard", ) {
OnBoardScreen(navController = …Run Code Online (Sandbox Code Playgroud)