小编典典

自动显示键盘

java

请向我解释有关软键盘的问题。例如,我的活动,对话框片段或片段活动(无论如何)上都有一个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将被聚焦并且键盘将出现,但是我错了。

我应该如何管理哪个组件将获得焦点,键盘将 自动 出现。


阅读 208

收藏
2020-10-07

共1个答案

小编典典

我认为这是一个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()方法中执行此操作:

@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;
}
2020-10-07