如何使用window.setSoftInputMode()组合状态和调整

时间:2018-09-29 12:33:03

标签: android

当我的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出现时即可。

如何以编程方式组合stateAlwaysVisibleadjustPan

1 个答案:

答案 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)

在此处详细了解按位运算符:JavaKotlin