Android:在edittext中显示键盘

时间:2013-12-23 05:52:01

标签: android

在Android App am编码中遇到了一个非常简单的问题。我有一个EditText个对象列表,每行一个。

当用户长按EditText时,我需要显示键盘。当用户长按时,我会调用此方法:

private void setNameAsEditable(View rowView, boolean setToEditable) {

    EditText textView = (EditText) rowView
        .findViewById(R.id.edittext_name);
    textView.setFocusableInTouchMode(setToEditable);
    textView.setFocusable(setToEditable);
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(textView, InputMethodManager.SHOW_IMPLICIT);
}

edittext变得可编辑(下划线和光标出现,如下所示)

enter image description here

但是键盘没有出现。

我尝试了stackoverflow的各种解决方案(如this),但徒劳无功。

我甚至尝试过

this.getWindow().setSoftInputMode ( WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);

我希望软键盘在用户长按EditText后立即显示。有人可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

尝试一下,对我来说它运作正常。

 et =(EditText) findViewById(R.id.edittext_name);
      imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
      imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
      et.setText("hide key board");
      et.setFocusable(false);
     et.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            et.setFocusableInTouchMode(true);
            imm.showSoftInput(et, 0);
            et.setText("show key board long pressed");
            return false;
        }
    });

答案 1 :(得分:3)

这终于有效了(Amit的回答+ Tamilan的回答)非常感谢!

private void setNameAsEditable (View rowView, boolean setToEditable) {

    EditText textView = (EditText) rowView
            .findViewById(R.id.edittext_name);
    textView.setFocusableInTouchMode(setToEditable);
    textView.setFocusable(setToEditable);

    InputMethodManager imm = (InputMethodManager) getContext().getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.hideSoftInputFromWindow(textView.getWindowToken(), 0);

    if (setToEditable) {
         textView.requestFocus();
        imm.showSoftInput(textView, 0);
    }
}

答案 2 :(得分:1)

EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);

答案 3 :(得分:0)

检查你是否有android:focusable =" false"或者android:focusableInTouchMode =" false"在你的xml布局中。