DialogFragment.dismiss()在屏幕上留下键盘

时间:2018-11-09 14:55:58

标签: android kotlin keyboard dismiss dialogfragment

我正在观察我的应用程序中的一种奇怪行为,即在取消import pandas as pd df=pd.DataFrame({ 'Name':['Harry','Sally','Mary','John','Francis','Devon','James','Holly','Molly','Nancy','Ben'], 'Score': [1143,2040,2500,3300,3143,2330,2670,2140,2890,3493,1723]} ) def GroupMapping(dl): if int(dl) <= 1000: return '0-1000' elif 1000 < dl <= 2000: return '1000 - 2000' elif 2000 < dl <= 3000: return '2000 - 3000' elif 3000 < dl <= 4000: return '3000 - 4000' else: return 'None' #df["Group"] = df['Score'].map(GroupMapping) #df["Group"] = df['Score'].apply(lambda row: GroupMapping(row)) df['Group'] = pd.cut(df['Score'], [0, 1000, 2000, 3000, 4000], labels=['0-1000', '1000 - 2000', '2000 - 3000','3000 - 4000' ]) df 后,屏幕键盘仍在屏幕上徘徊,遮盖了活动的UI,尽管该活动的DialogFragment设置为android:windowSoftInputMode在我的清单中。

这就是我所拥有的:

  • 该活动是adjustResize
  • 活动的根元素是AppCompatActivity,其中包含具有属性CoordinatorLayout的{​​{1}}
  • 在我的清单文件中,此活动具有属性ScrollView
  • 该活动具有触发android:isScrollContainer="true"显示的按钮,其中包含一个android:windowSoftInputMode="adjustResize"元素。
  • 当弹出带有对话框android.support.v4.app.DialogFragment的对话框时,键盘本身不会显示,因此我通过在对话框显示中显式显示键盘并在关闭对话框之前将其隐藏来解决该问题。

我的问题是隐藏的键盘似乎无法正常工作:对话框消失后,键盘停留,活动UI并未调整大小,因此被键盘和“返回”导航按钮遮盖了指向左,而不是向下,好像认为未显示键盘一样。另外,随后单击我活动中的任何文本框,然后会使键盘消失,好像键盘意识到本来就不应该在那儿。当我注释掉AutoCompleteTextView呼叫,并通过单击对话框中的任意位置来关闭对话框时,我看到键盘正确地消失了,一切正常。

我的DialogFragment类定义的相关代码如下:

AutoCompleteTextView

我在这里做错什么了吗?

1 个答案:

答案 0 :(得分:0)

我对包含两个editText字段的DialogFragment有类似的问题。这是在调用hideKeyboard之前调用的我的dismiss()方法:

fun hideKeyboard(dialog: Dialog) {
        val focusedEditTextView = dialog.currentFocus

        val inputMethodManager = (focusedEditTextView?.context?.getSystemService(Context.INPUT_METHOD_SERVICE)) as InputMethodManager

        if (inputMethodManager.isActive) {
            inputMethodManager.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS)
        }
    }

这对我有用-在Android 9.1上进行了测试