2013-03-27 38 views
3

我正嘗試在android中的軟鍵盤上編寫畫布。我怎樣才能在畫布上顯示軟鍵盤並在其上寫入信息

我的問題是如何顯示軟鍵盤和處理它在畫布上生成的事件。 我的代碼是:

public class DrawView extends View { 
      Paint paint = new Paint(); 
      private static final String LOGID = "MxView"; 
      String message = "No key pressed yet."; 
      DrawView(Context context) { 
        super(context); 
        setFocusable(true); 
      } 

      @Override 
      protected void onDraw(Canvas canvas) { 

        canvas.drawText(message, 5, 20, paint); 

      } 
      @Override 
      public boolean onKeyDown(int keyCode, KeyEvent ev) { 
        switch(keyCode) { 
        case KeyEvent.KEYCODE_ENTER: 
          message = "Key is Enter!"; 
          Log.i(LOGID, message); 
          break; 
        case KeyEvent.KEYCODE_E: 
          message = "Key is E!"; 
          Log.i(LOGID, message); 
          break; 
        default: 
          return false; 
        } 
        invalidate(); 
        return true; 
      } 
     } 

回答

2

您可以通過向屏幕提供「菜單」來做到這一點。當用戶選擇該選項時,請執行以下操作。

  • 允許用戶以觸摸屏,這是他希望把他的文字
  • 然後創建一個「自定義對話框」只要你想這需要根據用戶輸入的地方。
  • 將這些文本返回到您的屏幕並在用戶觸摸時寫入文本。

第二種方法是通過以下代碼查看軟鍵盤。

((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY); 

這將顯示軟鍵盤,並從鍵盤採取參數,使用下面的代碼。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    Log.d("TEST", "Key Down :" + keyCode + " String : " + s); 
    s += (char) event.getUnicodeChar(); 

    return super.onKeyDown(keyCode, event); 
} 

這裏,「s」是存儲按下值的String對象。

要隱藏鍵盤,

((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)) 
       .hideSoftInputFromWindow(rel.getWindowToken(), 0); 

這裏,relRelativeLayout。你可以在這裏傳遞任何視圖。

+0

感謝您的回答,請編輯我的代碼併發送 – 2013-03-28 15:15:51

+0

什麼是rel.relWindowToken()? – 2014-06-07 07:28:45

+0

@support_ms,您好我編輯了我的答案。請檢查。 :) – 2014-06-07 08:30:55

相關問題