当我的DialogFragment出现时,我需要显示键盘,所以我这样做了:
dialog.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
它工作得很好,但是如果键盘高到屏幕上方(例如,当您尝试使用表情符号面板上的搜索栏时),我会挤压EditText。
因此,我将android:windowSoftInputMode="adjustPan"
放在清单文件中,但被忽略了。因此,我摆脱了SOFT_INPUT_STATE_ALWAYS_VISIBLE
。然后,压缩部分被修复,但是我的键盘没有自动显示,除非我点击EditText。
Android documentation说,您可以像这样在windowSoftInputMode上组合状态和调整选项:
<activity
android:windowSoftInputMode="stateAlwaysVisible| adjustPan" ... >
...
</activity>
但是由于它是DialogFragment,所以我不需要在Activity上显示键盘,只需在DialogFragment出现时即可。
如何以编程方式组合stateAlwaysVisible
和adjustPan
?
答案 0 :(得分:1)
似乎可以使用按位或运算符。所以看起来像这样:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
...或者如果您使用Kotlin:
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE or WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)