相关疑难解决方法(0)

如何在 jetpack compose 中检测键盘的打开和关闭?

我在撰写中发现的唯一方法是使用accompanist-insetsand 删除窗口插图。这会导致我的应用程序布局出现其他问题。

Android 方式似乎是这样的,我可以将其传递到我的撰写应用程序中并采取相应的操作。

jetpack compose 还有其他方法吗?

android-jetpack-compose

39
推荐指数
4
解决办法
2万
查看次数

焦点时 TextField 隐藏在键盘下方

我有一个隐藏在键盘下的 TextField 问题,我在这里找到了类似问题的答案,但它们对我的情况没有帮助。我有一个 LazyColumn,其中包含不同可组合项的列表,当窗口中没有足够的元素来激活滚动时,专注于 TextField 不会将聚焦的 TextField 提升到键盘上方。键盘只是隐藏它。我的代码:

val listState = rememberLazyListState()
typealias ComposableType = @Composable (Int) -> Unit
val uiList = listOf<ComposableType>( {IconButton}, {Text}, {CustomTextField(listState,it)}, {CustomTextField(listState,it)})
LazyColumn() {
    itemsIndexed(uiList) { index, ui ->
                ui.invoke(index)
        }
}

val scope = rememberCoroutineScope()
@Composable
CustomTextField(scrollState: LazyListState, position: Int) {
    OutlinedTextField(
        modifier = Modifier.onFocusEvent { focusState ->
            if (focusState.isFocused) {
                scope.launch {
                    scrollState.animateScrollToItem(position)
                }
            }
    )    
}
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果我的 uiList 中有 10 个 CustomTextField,则当其中一个 TextField 获得焦点时,滚动就会起作用。但是,当 uiList 中只有 2 个 TextField 时,关注其中任何一个都不会将它们提升到键盘上方。 …

android-jetpack android-jetpack-compose android-compose-textfield android-jetpack-compose-list

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

键盘打开时列不滚动

我想用Jetpack Compose开发我的下一个 Android 应用程序。我知道它是新的并且处于 Alpha 状态。

用这段代码,我想实现一个登录视图。到目前为止,它一直工作到键盘打开:-(

在此处输入图片说明

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)) …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

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