显示和隐藏软键盘不起作用

时间:2015-03-08 17:42:25

标签: android android-softkeyboard

不确定它是否相关,但我正在使用LG G3和Android 4.4.2

我有一个我希望键盘显示的片段,所以我做了以下内容:

txtContact = (EditText) rootView.findViewById(R.id.txtContact);
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(txtContact.getWindowToken(), InputMethodManager.SHOW_IMPLICIT);

,布局就是这样,包括相关字段的requestFocus:

<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textMultiLine"
        android:ems="10"
        android:lines="10"
        android:layout_margin="10dp"
        android:id="@+id/txtContact">

        <requestFocus />
    </EditText>

当打开这个片段时,光标就在它应该的位置,但是键盘不在那里,只有在字段内部点击时,它们才会出现。

另一个问题与第一个问题相反。在另一个片段上,我想在片段打开时隐藏键盘,无论如何。原因是,用户可以在关闭另一个片段之后打开这个片段,键盘显示在那里我想确保它关闭,注意我不知道键盘是否显示,我想要它如果它是开放的,它将保持关闭状态。我在这个片段中只有一个ListView,所以我做了以下内容:

lv = (ListView) rootView.findViewById(android.R.id.list);
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(lv.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

但它拒绝对键盘产生任何影响,它仍保持打开状态。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试将onResume()post()中的代码称为Runnable。 如果您的FragmentDialogFragment,则在getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);中调用onCreateView()即可。