2014-06-30 28 views
0

我在視圖擴展中有以下雙擊手勢,如下所示。此事件在被解僱時將焦點更改爲我下面的視圖。 MyView.this.requestFocus();被調用,並出現鍵盤。不幸的是(在運行android 4.0.4的galaxy note 2上)我根本沒有收到dispatchKeyEvent回調。在運行Android 4.4+的Nexus 4上,我收到了此回調。我不確定如何繼續。dispatchKeyEvent不叫

private class DoubleTapGestureListener extends SimpleOnGestureListener { 

     private Context mContext; 
     private Rect mTextBounds; 

     public DoubleTapGestureListener(Context context) { 
      super(); 
      mContext = context; 
     } 

     @Override 
     public boolean onDoubleTap(MotionEvent e) { 
      float xValue = e.getX(); 
      float yValue = e.getY(); 

      for (PaintBrush brush : brushes) { 
       mTextBounds = brush.getTextBounds(); 

       if (mTextBounds.contains((int)xValue, (int)yValue)) { 
        Log.i(TAG, "Doubletap on text!"); 
        InputMethodManager imm = (InputMethodManager) mContext 
          .getSystemService(Context.INPUT_METHOD_SERVICE); 
        MyView.this.requestFocus(); 
        imm.showSoftInput(MyView.this, 
          InputMethodManager.SHOW_FORCED); 
       } 

      } 

      return true; 
     } 

     public void setTextBounds(Rect mTextBounds) { 
      this.mTextBounds = mTextBounds; 
     } 

    } 

} 

回答

0

軟鍵盤不發送按鍵事件 - 只有物理按鍵和鍵盤才能做。軟鍵盤使用InputConnection發送事件(可能是關鍵事件或可能是commitText調用)。如果你想獲得所有的事件,你需要實現一個InputConnection。

+0

對不起,我對android開發有點新,但是事件確實在其他設備上啓動。因此,在這種情況下,我們會推薦什麼,以便我可以接收Galaxy Note 2以及nexus設備上的觸發事件? – TheCodingArt

+0

當他們按下鍵盤按鍵時,我特別需要一個關閉事件的事件,以便我可以將字符串值附加到我具有的模型對象並重畫屏幕。 – TheCodingArt

+0

Android的軟鍵盤不能像那樣工作。您必須爲您的視圖實施InputConnection,這是相當多的工作。 –