调整 Android 软键盘显示或隐藏时的布局
Adjust the layout when the Android soft keyboard is shown or hidden
我的目标是实现大多数消息传递应用程序(如 Facebook Messenger、Viber、What's up)在显示附件时所做的事情 sheet。如果软键盘可见并且用户想要附加某些内容,则键盘会隐藏,附件 sheet 会出现在它的位置。
为了使这项工作正常进行,布局更改应该在根视图大小更改时发生。否则,在键盘 shown/hidden.
之前不久应用我的布局更改的地方会出现图形 故障
如果我能在键盘隐藏的那一刻改变我的布局,我就能做到。我尝试使用 onGlobalLayoutListener
但没有达到预期的效果。
将此行添加到您的 activity 清单中。
<activity
android:name="com.your.Activity"
android:windowSoftInputMode="stateHidden|adjustPan" />
使用此代码会有帮助。
android:windowSoftInputMode="adjustNothing"
查明您的布局是否因键盘(消失)出现和响应更改而发生变化的最佳位置是在根布局的 onMeasure()
内部。
更详细地说,我制作了一个自定义的 LinearLayout,用作我的根布局。我覆盖了 onMeasure
和 calculate 当前键盘高度是多少。根据键盘的高度以及我的附件网格是否应该可见,我更改了附件网格的可见性。我什至可以将网格的高度设置为与键盘相同。
结果看起来网格总是在键盘下方,文本视图保持在同一垂直位置。
我的目标是实现大多数消息传递应用程序(如 Facebook Messenger、Viber、What's up)在显示附件时所做的事情 sheet。如果软键盘可见并且用户想要附加某些内容,则键盘会隐藏,附件 sheet 会出现在它的位置。
为了使这项工作正常进行,布局更改应该在根视图大小更改时发生。否则,在键盘 shown/hidden.
之前不久应用我的布局更改的地方会出现图形 故障如果我能在键盘隐藏的那一刻改变我的布局,我就能做到。我尝试使用 onGlobalLayoutListener
但没有达到预期的效果。
将此行添加到您的 activity 清单中。
<activity
android:name="com.your.Activity"
android:windowSoftInputMode="stateHidden|adjustPan" />
使用此代码会有帮助。
android:windowSoftInputMode="adjustNothing"
查明您的布局是否因键盘(消失)出现和响应更改而发生变化的最佳位置是在根布局的 onMeasure()
内部。
更详细地说,我制作了一个自定义的 LinearLayout,用作我的根布局。我覆盖了 onMeasure
和 calculate 当前键盘高度是多少。根据键盘的高度以及我的附件网格是否应该可见,我更改了附件网格的可见性。我什至可以将网格的高度设置为与键盘相同。
结果看起来网格总是在键盘下方,文本视图保持在同一垂直位置。