显示和隐藏软键盘不起作用
Showing and hiding the soft keboard does not work
不确定它是否相关,但我使用的是带 Android 4.4.2
的 LG G3
我有一个要显示键盘的片段,因此我执行了以下操作:
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);
但它拒绝对键盘产生任何影响,它仍然保持打开状态。
我做错了什么?
尝试将 onResume()
或 post()
中的代码作为 Runnable
调用。
如果您的 Fragment
是 DialogFragment
,那么在 onCreateView()
中调用 getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
应该就足够了。
不确定它是否相关,但我使用的是带 Android 4.4.2
的 LG G3我有一个要显示键盘的片段,因此我执行了以下操作:
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);
但它拒绝对键盘产生任何影响,它仍然保持打开状态。
我做错了什么?
尝试将 onResume()
或 post()
中的代码作为 Runnable
调用。
如果您的 Fragment
是 DialogFragment
,那么在 onCreateView()
中调用 getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
应该就足够了。