You need to enable JavaScript to run this app. Android软键盘弹出时Fragment上移 如何固定Fragment不被顶起
优惠活动
大模型
产品
解决方案
定价
更多

Android软键盘弹出时Fragment上移 如何固定Fragment不被顶起

问题原因

你使用的SOFT_INPUT_STATE_HIDDEN参数仅用于控制软键盘的初始显示状态,和软键盘弹出时的布局调整逻辑完全无关,所以不会生效。

解决方法

你需要将软输入调整模式改为SOFT_INPUT_ADJUST_NOTHING,该模式下系统不会调整Activity布局,软键盘会直接覆盖在现有页面上方。

方法1:在Fragment中动态设置(仅当前页面生效)

在onViewCreated方法中替换为以下代码:

// 如果需要同时保持初始状态软键盘隐藏,两个参数用|拼接即可
this@MainFragment.requireActivity().window.setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING
)

如果该Fragment不是所属Activity的唯一页面,建议在onDestroyView中改回原有模式,避免影响其他页面:

override fun onDestroyView() {
    requireActivity().window.setSoftInputMode(
        // 替换为Activity原来的软输入模式,默认一般为SOFT_INPUT_ADJUST_RESIZE
        WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE
    )
    super.onDestroyView()
}

方法2:在Manifest中全局设置(整个Activity生效)

如果所属Activity的所有页面都需要这个逻辑,直接在AndroidManifest.xml对应的Activity节点添加属性即可:

<activity
    android:name=".你的Activity名称"
    android:windowSoftInputMode="adjustNothing|stateHidden" />

注意事项

检查Activity根布局是否设置了android:fitsSystemWindows="true",如果有该属性请改为false,否则仍可能出现布局上移的问题。


内容的提问来源于stack exchange,提问作者Tom Darious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 06:36:00