软键盘在焦点上不显示

时间:2014-03-05 19:22:07

标签: android keyboard android-softkeyboard

当EditText以编程方式聚焦时,我有一个小功能来打开软键盘,如下所示......

public void getUserName() {
    EditText tv = (EditText)findViewById(R.id.user_info_name);
    tv.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean b) {
            if (b) {
                showDialog("Focused!");
                getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
            }
        }
    });
    tv.selectAll();
    tv.requestFocus();
}

但是,软键盘不会自动出现,但对话框显示说明了焦点。为了让键盘出现,我必须在EditText中单击。

我的XML如下......

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:id="@id/user_info_name"
        android:editable="true"
        android:hint="@string/user_info_name"
        android:inputType="textCapWords|textPersonName"
        android:textColor="@color/blue_gray"
        android:maxLength="50"
        android:layout_centerInParent="true"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:enabled="true"
        android:focusable="true"
        android:focusableInTouchMode="true" />

有人可以告知为什么它不起作用或我遗失/未能解决的问题。

一如既往地感谢您。

已解决:以下对该功能的更改解决了问题......

public void getUserName() {
    EditText tv = (EditText)findViewById(R.id.user_info_name);
    tv.selectAll();
    tv.requestFocus();
    InputMethodManager imm = (InputMethodManager)this.getSystemService(this.INPUT_METHOD_SERVICE);
    imm.showSoftInput(tv,InputMethodManager.SHOW_IMPLICIT);
}

0 个答案:

没有答案