Android:软键盘没有显示出来

时间:2012-09-28 13:46:53

标签: android android-edittext android-softkeyboard

我在MainActivity布局中有2个EditTexts。如果我正常运行应用程序,第一个EditText会聚焦,但软键盘不会打开。

但是当我使用它时:

public class TestingActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        EditText et1 = (EditText) findViewById(R.id.editText1);
        EditText et2 = (EditText) findViewById(R.id.editText2);

        et2.requestFocus();
        InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        mInputMethodManager.showSoftInput(et2, InputMethodManager.SHOW_IMPLICIT);
    }
}

期望第二个EditText将获得焦点,并且将打开软键盘。

我只获得焦点,但只有当我点击EditText时才会打开软键盘。

谢谢

5 个答案:

答案 0 :(得分:6)

尝试在活动的AndroidManifest.xml文件中指定android:windowSoftInputMode属性。

例如:

<activity android:name=".TestingActivity" android:windowSoftInputMode="stateVisible|adjustResize" />

您可能不需要在Activity中使用InputMethodManager的任何代码。

答案 1 :(得分:1)

我注意到键盘没有显示的一个原因是选择特定Android设备不支持的输入类型。例如,InputType.TYPE_NUMBER_VARIATION_NORMAL对我的Asus Transformer不起作用(没有键盘显示),而InputType.TYPE_CLASS_NUMBER也可以正常工作。

答案 2 :(得分:1)

    et2.clearFocus();
    et2.requestFocus();
    InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    mInputMethodManager.showSoftInput(et2, InputMethodManager.SHOW_IMPLICIT);

我在Android N平台上遇到问题并通过重新调整editview来解决它。 我不知道为什么应该首先清除editview的真正原因,但它对我来说很好。

答案 3 :(得分:0)

有时你需要延迟显示键盘命令,所以在我的情况下,我做了以下

editText.postDelayed(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
        }
    }, 300);

答案 4 :(得分:-2)

要将焦点集中到特定的edittext,只需在编辑文本中添加标记即可。

<EditText 
    android:id="@+id/etBox"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:hint="enter into editbox"
    >
    <requestFocus/>
    </EditText>