【问题标题】:Android: softkeyboard not showing upAndroid:软键盘未显示
【发布时间】:2012-09-28 13:46:52
【问题描述】:

我在 MainActivity 布局中有 2 个 EditText。如果我正常运行应用程序,第一个 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 时才会打开。

谢谢

【问题讨论】:

    标签: android android-edittext android-softkeyboard


    【解决方案1】:

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

    例如:

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

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

    【讨论】:

    • 实际上我的要求是将焦点设置在特定的 EditText 上并以编程方式打开软键盘。
    • @wsanville,它在 2.2 版本中工作,但在 4.1.2 中没有。即使在 EditText 单击时,键盘也没有显示。我只签入了模拟器。
    • android:windowSoftInputMode="adjustResize" 对我来说效果很好。谢谢。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
          et2.clearFocus();
          et2.requestFocus();
          InputMethodManager mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
          mInputMethodManager.showSoftInput(et2, InputMethodManager.SHOW_IMPLICIT);
      

      我在 Android N 平台上遇到了这个问题,并通过重新调整编辑视图来解决它。 我不知道应该首先清除编辑视图的真正原因,但它对我来说很好。

      【讨论】:

      • 软键盘可能被Dialogfragment或其他东西覆盖
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        要获得特定编辑文本的焦点,只需在编辑文本中添加标签。

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

        【讨论】:

        • Archie 的问题不是关于在编辑文本元素上自动设置焦点,而是关于当编辑文本元素具有焦点时软键盘不显示。
        • 这不能回答问题,您应该删除它以避免投票
        猜你喜欢
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 2011-09-22
        • 2020-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多