【问题标题】:Android dismiss keyboard "naturally"Android“自然地”关闭键盘
【发布时间】:2013-02-20 22:59:28
【问题描述】:

在我的应用程序中,我有一个编辑文本来输入 url,然后编辑文本有:

android:imeOptions="actionDone"

因此,当有人按下键盘的 Enter 按钮时,应用程序连接并且键盘被关闭。但是,我还有一个可以单击而不是使用 enter 命令的按钮,在这种情况下,我将模拟按下软键盘的完成按钮,而不是使用其他线程中建议的典型方法来关闭键盘。这是我的做法:

v.findViewById(R.id.button1)
    .setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            edit.dispatchKeyEvent(new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER, 0));

        edit.dispatchKeyEvent(new KeyEvent(0, 0, KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER, 0));
        }
    }); 

我有一个动作监听器,它会捕获事件:

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    Log.e(TAG, "Key event received "+actionId);
    if (actionId == EditorInfo.IME_ACTION_DONE || 
            (event.getKeyCode() == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP)  ){
        Log.e(TAG, "Key event received  will connect");
        onConnectToServer(null);
        return true;
    }else if(event.getKeyCode() == KeyEvent.KEYCODE_ENTER) return true;
    return false;
}

但我收到错误,似乎关键事件被发送了 100 次,并且键码未被识别为输入按钮。 我不想用其他方法关闭键盘的原因:

InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mFilterEditText.getWindowToken(), 0);

是因为在该代码之后,当我需要它在另一个片段中显示时,键盘不会再次自动显示(+ 我只有一个活动和许多片段,因此无法在清单中设置) 有任何想法吗?谢谢

【问题讨论】:

    标签: android keyboard android-edittext


    【解决方案1】:

    不敢相信这么简单:

    edi3.onEditorAction(EditorInfo.IME_ACTION_DONE);
    

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 2014-05-14
      • 2016-03-04
      • 2012-10-12
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多