【问题标题】:How to Trigger the soft keyboard?如何触发软键盘?
【发布时间】:2011-01-13 15:02:56
【问题描述】:

如何触发软键盘并为其按键添加监听器?

【问题讨论】:

    标签: java android keyboard


    【解决方案1】:

    要显示软键盘,您可以尝试:InputMethodManager.showSoftInput()

    至于添加侦听器,您能做的最好的事情就是将TextChangedListener 添加到EditText 以侦听通过键盘在EditText 视图中所做的更改。

    【讨论】:

    • 我试图做这样的事情:在我在地图视图中按下长菜单按钮时,向我显示软键盘..但是当我按下菜单时,应用程序崩溃:这就是什么我写在我的 proggy 中:
    • InputMethodManager showSoftInput; public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_MENU: showSoftInput.showSoftInput(mapView, 0);休息; case KeyEvent.KEYCODE_1: //放大 mc.zoomIn();休息; case KeyEvent.KEYCODE_2: //缩小 mc.zoomOut();休息; case KeyEvent.KEYCODE_4: // 向左滚动 mc.scrollBy(-4, 0);休息; case KeyEvent.KEYCODE_5: // 向右滚动 mc.scrollBy(4, 0);休息; } 返回 super.onKeyDown(keyCode, event); } 怎么了?伊丹。
    • 添加到第一行:InputMethodManager showSoftInput=(InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
    • 哦,我的眼睛...请不要在 cmets 中添加那么多代码。编辑您的原始问题以添加该代码。此外,长按菜单按钮应始终显示软键盘。如果它导致您的应用崩溃,请在您的原始问题中提供堆栈跟踪...。
    • 哦,对不起,下次记下(关于代码添加)。关于你长按菜单所说的话..我试过了..它只是没有用..暗恋wwas with other things.现在它已经修复了。但如果我只是按长菜单.. 它不显示.. 不在模拟器中,而不是在真实手机上。我在进行 mapview 活动时尝试过。为什么它不显示?谢谢,伊丹。
    【解决方案2】:

    我尝试了两个选项,但它们都没有在模拟器中工作,正如我所说,我正在尝试在长按菜单上弹出软键盘:

    @Override
    
    public boolean onKeyLongPress(int keyCode, KeyEvent event)
    
    {
    
                if (keyCode == KeyEvent.KEYCODE_MENU)
            {
                 showSoftInput.getInputMethodList();
                 showSoftInput.toggleSoftInput(showSoftInput.SHOW_FORCED, 0);
    
                return true;
            }
            return super.onKeyLongPress(keyCode, event);
        }
    

    第二个选项:

    View.OnLongClickListener mLongClickListener = new View.OnLongClickListener()
        {
    
            @Override
            public boolean onLongClick(View v)
            {
    
                Configuration config = RouteMapActivity.this.getResources()
                        .getConfiguration();
                if (config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES)
                {
                    InputMethodManager imm = (InputMethodManager) RouteMapActivity.this
                            .getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.showSoftInput(mapView, InputMethodManager.SHOW_IMPLICIT); // .SHOW_FORCED);
                }
                return false;
            }
    
        };
    

    【讨论】:

      【解决方案3】:

      您可以在您的 AndroidManifest.xml 中添加

      <activity
          android:windowSoftInputMode="stateVisible" ... >
          ...
      </activity>
      

      但请注意:如果用户的设备连接有硬件键盘,则不会出现软输入法。 http://developer.android.com/training/keyboard-input/visibility.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-01-17
        • 2018-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        相关资源
        最近更新 更多