windowSoftInputMode=adjustResize下Kotlin Compose BottomSheet异常
解决BottomSheetScaffold文本框键盘弹出布局错乱问题
问题根源
在Manifest中设置android:windowSoftInputMode="adjustResize"后,系统会在键盘弹出时调整窗口尺寸,但BottomSheetScaffold的布局计算依赖原始窗口尺寸,两者逻辑冲突导致布局错乱。
解决方案
方案1:修改Manifest软键盘模式
将android:windowSoftInputMode="adjustResize"替换为:
android:windowSoftInputMode="adjustPan"
该模式下系统会平移窗口而非调整尺寸,BottomSheet的布局不会被打乱。需注意此模式可能导致顶部布局被键盘遮挡,适合BottomSheet作为核心交互区域的场景。
方案2:在Compose布局内适配
若必须保留adjustResize,可给BottomSheet的内容添加imePadding()修饰符,让内容自动避开键盘:
BottomSheetScaffold( sheetContent = { Column( modifier = Modifier .fillMaxWidth() .imePadding() // 添加该修饰符适配键盘 ) { TextField(value = "", onValueChange = {}) // 其他内容 } } ) { // 主内容区域 }
如果需要更精细的布局控制,也可以自定义BottomSheetBehavior监听键盘状态,动态调整BottomSheet高度,但实现相对复杂。
内容的提问来源于stack exchange,提问作者Cipri
相关产品推荐
相关产品推荐

