EditText onClick不显示虚拟键盘

时间:2013-02-11 11:05:04

标签: android android-edittext android-virtual-keyboard

如果我点击我的EditText,虚拟键盘就不会显示出来了。显示光标,但没有键入键盘。

我甚至尝试手动打开,但没有效果。

这是我的代码:

public class CreateNote extends Activity {
EditText titleEdit;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.createnote);
    titleEdit = (EditText) findViewById(R.id.titleEdit);
    titleEdit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            InputMethodManager imm = (InputMethodManager) CreateNote.this
                    .getSystemService(Service.INPUT_METHOD_SERVICE);
            imm.showSoftInput(titleEdit, 0);
        }
    });
    }
   }

布局片段:

 <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#989898" >

    <EditText
        android:id="@+id/titleEdit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/edittextdrawale"
        android:ems="10"
        android:textColor="#fff"
        android:textColorHint="#fff" >

        <requestFocus />
    </EditText>

</FrameLayout>

玩隐藏和寻找虚拟键盘的原因是什么? 我在真实设备上测试,而不是在模拟器上测试。

4 个答案:

答案 0 :(得分:9)

试试这个,它对我有用。

EditText etHorseName = (EditText) getView().findViewById(R.id.horseName);
etHorseName.clearFocus();

onCreate()或您想要的地方。

答案 1 :(得分:3)

迟到的答案,但这里是如何在不添加代码的情况下解决它,只需从XML中删除它:

<requestFocus />

当设置键盘时,不知道键盘为什么不显示...但是如果您首先松开焦点然后单击编辑文本,它会显示出来。我在Android 2.3.6上遇到了问题,但它在4.1.2上工作,所以也许这是一个早期的错误。

答案 2 :(得分:0)

这只是一种默认行为,您不应该手动执行此操作,从代码中删除以下部分。

titleEdit.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        InputMethodManager imm = (InputMethodManager) CreateNote.this
                .getSystemService(Service.INPUT_METHOD_SERVICE);
        imm.showSoftInput(titleEdit, 0);
    }
});

答案 3 :(得分:0)

尝试使用以下代码隐藏和显示键盘:

InputMethodManager imm = (InputMethodManager) this.getSystemService(Service.INPUT_METHOD_SERVICE);
// To show keyboard
imm.showSoftInput(titleEdit, 0);
// To hide keyboard
imm.hideSoftInputFromWindow(titleEdit.getWindowToken(), 0);