【问题标题】:Android onKey w/ virtual keyboardAndroid onKey 带虚拟键盘
【发布时间】:2011-01-04 07:47:47
【问题描述】:

我正在使用 onKey 方法捕捉键盘事件/按下:

public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
    //do something
    return false;
}

这对于物理键盘按键触发很好,但它不会在虚拟键盘按键触发。是否有处理虚拟键盘按下的事件处理程序?

【问题讨论】:

    标签: java android


    【解决方案1】:

    如果是 EditText,看看是否可以改用 TextChangedListener。

    myEditText.addTextChangedListener(new TextWatcher(){
            public void afterTextChanged(Editable s) {}
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //do stuff
            }
    
        });
    

    【讨论】:

    • 成功了!我会在下面发布代码,因为它在这里的格式不正确,谢谢!
    【解决方案2】:

    虚拟按键直接传递到所选视图,它们不会像硬件按键那样通过父视图传播。您是否在 EditText/List/Whatever 之外的其他东西上覆盖了 onKey? (点击获取虚拟键盘的东西)

    【讨论】:

    • 我在实现 onClickListener 的活动上覆盖 onKey: public class Foo 实现 OnClickListener{ .. public void onKey(View arg0, int arg1, KeyEvent arg2){ if(arg0 == searchBox){/ /do something } } .. } 其中 searchBox 是一个 EditText
    【解决方案3】:
    myEditText.addTextChangedListener(new TextWatcher(){
            public void afterTextChanged(Editable s) {}
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //do stuff
            }
    
        });
    

    【讨论】:

      猜你喜欢
      • 2011-12-29
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多