gpt4 book ai didi

android - 键盘打开时列不滚动

转载 作者:行者123 更新时间:2023-12-04 11:33:40 24 4
gpt4 key购买 nike

我想用 Jetpack Compose 开发我的下一个 Android 应用程序.我知道它是新的并且处于 Alpha 状态。
使用此代码,我想实现一个登录 View 。到目前为止它一直有效,直到键盘打开:-(
enter image description here

private val items = listOf(Tab.Home)

private sealed class Tab(@StringRes val resourceId: Int) {
object Home : Tab(R.string.home)
}

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApplicationTheme {
Surface(color = MaterialTheme.colors.background) {
Scaffold(
topBar = {
TopAppBar(
title = {
Text(text = "Home")
}
)
},
bottomBar = {
BottomNavigation {
items.forEach { screen ->
BottomNavigationItem(
icon = { Icon(Icons.Filled.Favorite, null) },
label = { Text(stringResource(screen.resourceId)) },
selected = true,
onClick = { /* ... */
}
)
}
}
}
) {
Column(
Modifier.verticalScroll(rememberScrollState()).padding(16.dp)
) {
Text(text = "Lorem ipsum ...")
Spacer(modifier = Modifier.height(32.dp))
Text(text = "Lorem ipsum ...")
Spacer(modifier = Modifier.height(32.dp))
Text(text = "Lorem ipsum ...")
Spacer(modifier = Modifier.height(32.dp))
TextField(
value = "",
label = { Text("Name", color = MaterialTheme.colors.onPrimary.copy(alpha = 0.5f)) },
onValueChange = { /*TODO*/ },
modifier = Modifier.fillMaxWidth()
)
Spacer(modifier = Modifier.height(16.dp))
TextField(
value = "",
label = { Text("Password", color = MaterialTheme.colors.onPrimary.copy(alpha = 0.5f)) },
onValueChange = { /*TODO*/ },
modifier = Modifier.fillMaxWidth()
)
Spacer(modifier = Modifier.height(16.dp))
Button(
content = { Text("Login") },
onClick = { /*TODO*/ },
)
}
}
}
}
}
}
}

我使用这个垂直可滚动的列,但如果列的一部分在键盘后面,它就不会滚动。
为了修复它,我添加了 android:windowSoftInputMode="adjustResize|stateHidden"在 list 中。
现在我可以滚动列,但键盘顶部也是底部栏。而bottomBar覆盖了列底部的登录按钮。如果内容足够,bottomBar 也会覆盖按钮,如果键盘关闭,它也会滚动。
enter image description here
现在我有三个问题:
  • 当键盘打开但键盘顶部没有底部栏时,如何使列可滚动?
  • 如何实现对焦点文本字段的自动滚动?
  • 如何防止bottomBar覆盖按钮?
  • 最佳答案

    这是一个已知的 issue (至少在我的经验中使用 LazyColumn)。请随时为该错误加注星标。
    在那个线程中有一个涉及 RelocationRequester 的 hacky 解决方案。 (它重新定位一个可组合的,所以它是可见的)和onfocusChanged它告诉您何时进行搬迁。

    关于android - 键盘打开时列不滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65972467/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com