请向我解释有关软键盘的问题。例如,我的活动,对话框片段或片段活动(无论如何)上都有一个EditText。这里是:
<EditText android:id="@+id/edPswrd" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="textPassword" > <requestFocus /> </EditText>
当它第一次显示时,我没有看到软键盘,必须按下editText才能获得焦点,然后出现键盘。另一个活动有所不同,当它出现在屏幕上时,将在没有任何帮助的情况下加载键盘。我认为
表示EditText将被聚焦并且键盘将出现,但是我错了。
我应该如何管理哪个组件将获得焦点,键盘将 自动 出现。
我认为这是一个bug或一项功能,试图向您展示整个活动,而不会首先用软键盘掩盖它。我曾经搜索过有关该信息的信息,但不幸的是,没有发现任何来自可靠来源的信息。
无论如何,要显示软键盘,您可以执行以下操作:
EditText editText = (EditText)findViewById(R.id.edit_text_id); InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
我还看到了以下代码,该代码应强制在活动开始后立即显示软键盘,但从未尝试过:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
如果要隐藏软键盘,可以执行以下操作:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
希望能有所帮助。
编辑:
对于DialogFragment这应该工作:在onCreateView()方法中执行此操作:
DialogFragment
onCreateView()
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_id, container); EditText editText = (EditText)view.findViewById(R.id.edit_text_id); // show soft keyboard editText.requestFocus(); getDialog().getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE); return view; }