当我点击android中的edittextview时键盘没有显示?

时间:2011-08-08 04:32:12

标签: android android-edittext

当我点击edittextview时,有时会显示键盘或有时键盘没有显示。

在android 2.1中,当我点击edittextview

时会显示键盘

但是当我在Android 2.2上启动相同的应用程序时,它就不会显示键盘。

帮我告诉你如何展示这个问题。

8 个答案:

答案 0 :(得分:24)

好的,这可能是一个迟到的回应,但它确实有效。

我在android 2.1和2.3.x上遇到过这个问题(未在其他版本的SDK上测试过)。

我注意到一个奇怪的事情,当我点击EditText无法打开键盘时,我按下BACK按钮显示警告对话框,然后我取消(关闭)它,然后再次点击EditText,现在是键盘再次被赋予生命。

由此可以得出结论,如果EditText没有以前自己的焦点,键盘将始终显示EditText(在EditText视图上显示警告对话框将使EditText失去焦点)。

所以当EditText被带到前面时,请调用下面的函数:

mEditText.clearFocus();

parentViewThatContainsEditTextView.clearFocus();

答案 1 :(得分:7)

我在Galaxy S3上遇到了类似的问题(在PopupWindow上显示EditText控件 - 键盘从未显示过)。这解决了我的问题:

final PopupWindow popUp = new PopupWindow(vbl.getMainLayout());
[....]
popUp.setFocusable(true);
popUp.update();

答案 2 :(得分:4)

这是一个可能的解决方案:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(final View v, final boolean hasFocus) {
        if (hasFocus && editText.isEnabled() && editText.isFocusable()) {
            editText.post(new Runnable() {
                @Override
                public void run() {
                    final InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.showSoftInput(editText,InputMethodManager.SHOW_IMPLICIT);
                }
            });
        }
    }
});

代码基于下一个链接:

http://turbomanage.wordpress.com/2012/05/02/show-soft-keyboard-automatically-when-edittext-receives-focus/

答案 3 :(得分:3)

我不希望EditText使用editText.clearFocus()失去焦点。达成了这个解决方案。

@Override
public void onResume() {
    super.onResume();

    if (Build.VERSION.SDK_INT < 11) {
        editText.clearFocus();
        editText.requestFocus();
    }
}

答案 4 :(得分:2)

就我而言,它位于PopupWindow,我只需要拨打popupWindow.setFocusable(true)

答案 5 :(得分:1)

它就像一个魅力,如果你甚至想隐藏点击edittextView。

textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            displayKeyboard();
        }
    });

private void displayKeyboard(){
    if (textView != null) {
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInputFromWindow(textView.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);
    }
}

答案 6 :(得分:0)

可能的情况:

1)单击EditText时,通常会出现键盘。但是,如果您按下模拟器中的后退键按钮,键盘(不是屏幕键盘)就会消失。

2)在代码中,您可以通过设置标志来单击EditText来禁用键盘。

InputMethodManager inputmethodmgr= (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
inputmethodmgr.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); 

答案 7 :(得分:0)

DialogFragment 中显示EditText时,我遇到了同样的问题。尽管EditText获得了焦点(即,单击时它显示闪烁的插入符号),但键盘未显示。

我的解决方案是在DialogFragment的最上方视图中添加一个虚拟EditText。

<EditText
    android:id="@+id/editTextFix"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/fix"
    android:importantForAutofill="no"
    tools:targetApi="o"
    android:inputType="text"
    android:visibility="gone"/>