【发布时间】:2021-08-23 17:58:45
【问题描述】:
所以我有一个主要活动,其中有 3 个从顶部偏移的 TextField,因为我使用的是选项卡式导航:
但在小屏幕上发生的情况是键盘隐藏了第三个文本字段“Receiver”。
我该如何解决这个问题?使用 ScrollableLayout 会是一个解决方案(因此用户可以滚动到 unhide 第三个文本字段)?
【问题讨论】:
标签: android kotlin android-jetpack-compose
所以我有一个主要活动,其中有 3 个从顶部偏移的 TextField,因为我使用的是选项卡式导航:
但在小屏幕上发生的情况是键盘隐藏了第三个文本字段“Receiver”。
我该如何解决这个问题?使用 ScrollableLayout 会是一个解决方案(因此用户可以滚动到 unhide 第三个文本字段)?
【问题讨论】:
标签: android kotlin android-jetpack-compose
您可以通过三个步骤使用Accompanist Insets library 实现此目的:-
1- 在您的活动调用 setDecorFitsSystemWindows
WindowCompat.setDecorFitsSystemWindows(window, false)
2- 调用 ProvideWindowInsets 函数并包装您的内容
ProvideWindowInsets {
// your content
}
3- 在您的内容中调用 navigationBarsWithImePadding 修饰符
完整示例:-
WindowCompat.setDecorFitsSystemWindows(window, false) // step 1
setContent {
MaterialTheme {
ProvideWindowInsets { // step 2
Column(
modifier = Modifier
.navigationBarsWithImePadding() // step 3
) {
// your content
}
}
}
}
【讨论】:
<application ... >
<activity
android:windowSoftInputMode="adjustResize|adjustPan" ... >
...
</activity>
...
</application>
将此添加到您的清单中
https://developer.android.com/training/keyboard-input/visibility[Documentation][1]
android:windowsSoftInputMode 定义元素的定位。
【讨论】:
将此粘贴到 setContent 之前的 onCreate 中
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
学分:- https://stackoverflow.com/a/64053897/15880865
.
【讨论】:
所以我设法使用accompanist library 并将修饰符设置为Modifier.navigationBarsWithImePadding() 来做到这一点
【讨论】: