当前位置: 首页 > 面试题库 >

自动显示键盘

林和煦
2023-03-14
问题内容

请向我解释有关软键盘的问题。例如,我的活动,对话框片段或片段活动(无论如何)上都有一个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()方法中执行此操作:

@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;
}


 类似资料:
  • 我已经在NSNotificationCenter中注册了两个观察员,keyboardWillShow:和keyboardWillHide: 在这两种方法中,当我尝试设置包含UITextView的UIView的动画时,它会跳到我尝试设置动画的帧,然后再设置回原始位置的动画。我在touchesbearth方法中尝试了相同的动画代码来测试它,它在那里工作得很好(设置新帧的动画,而不是跳回原始位置)。 我

  • 我正在寻找一个用JavaScript编写的好的全方位语法荧光笔,它将自动检测所使用的语言并应用正确的语法高亮显示。 我从一个简单的谷歌搜索中找到了无数个,但它们都必须在

  • 问题内容: 我一直在尝试使此scrollview滚动,但这样做没有任何运气。我尝试了多种修复程序,但似乎无法正常工作。我希望能够在选择一个编辑框并且键盘占据一半屏幕的情况下滚动浏览我的页面。这样,我可以导航到其余的编辑框和页面底部的接受按钮,而不必每次都手动隐藏键盘。 这是我的xml代码: (请有人帮我弄清楚这件事,它使我发疯!!)。我还要提及的是,我曾与遇到类似问题的人一起尝试过大多数修复程序,

  • 问题内容: 我有一个输入活动。初始化活动后,将显示Android键盘。在用户集中输入之前,键盘如何保持隐藏状态? 问题答案: 我认为以下可能有效 我以前已经将它用于此类事情。

  • 我试图得到一个自动完成列表弹出,使用此链接作为指导。 我得到的错误消息: w/filter:performFiltering()期间发生异常!java.lang.nullPointerException:collection==null at java.util.ArrayList.(arrayList.java:94)at android.widget.arrayAdapter$arrayFil

  • 我有一个来选择一个火车站,它使用两个不同的适配器: 适配器 1:包含最近和附近电台的固定列表(不需要软键盘即可通过键入进行筛选) 适配器 2:包含电台 sqlite 数据库的光标(确实需要软键盘通过键入进行过滤) 所以,我想阻止软键盘在自动完成文本视图获得焦点并使用ADAPTER 1时显示,但我还没有找到方法。 我目前正在使用它,但软键盘不断弹出: