2011-01-06 75 views
28

我的問題是:如何更新飛行中軟鍵盤的操作按鈕的顯示?如何即時更新編輯器動作按鈕顯示?

另一篇文章似乎是關於在顯示鍵盤之前更改編輯器操作:Android: Can't figure how to use setImeActionLabel。我想更改顯示的軟鍵盤操作按鈕。

我已經部分成功: - 我可以通過使用editText.setImeOptions(EditorInfo.IME_ACTION_GO)來更改操作; - 我也可以使用以下方法重新繪製鍵盤:InputMethodManager.restartInput(editText); 我使用TextWatcher.afterTextChanged來做到這一點。 - 但是,我有這個問題。如果我按下一個鍵,鍵盤上會顯示哪個鍵被按下。但是當我調用restartInput(...)時,這也隱藏了顯示哪個鍵被按下的視圖。這對我來說似乎很正常,但我需要一種解決方法。

擴展EditText並重寫onKeyUp不是一個好主意,請參閱:https://groups.google.com/forum/?fromgroups#!topic/android-developers/RIxGfx5qOjM

KeyboardView類正是我所需要的(invalidateKey),但我認爲只有在創建自己的輸入方法時才能訪問它。

其他人有更好的點子嗎?

+0

驗證視圖本身無效嗎? – 2012-10-10 14:04:46

回答

1

請儘量當你描述你想做的事...我需要讀您的文章多次才能夠明白你的要求是什麼更具體的..

所以,你想要做的是如何對在鍵盤上按下的任何按鍵作出反應,並在鍵盤上的操作鍵中顯示有關它的信息。 如果這不是你的目標PLZ來解釋更多...

如果是的話,所以我想你會需要使用addaL EditText(不可見)讓我們打電話et0。在完成插入字母或通過編輯文本中的ontextchanged定義的任何模式後,將焦點更改爲et0 ..以便您可以更改actionKey ..然後將焦點發送回您的editText ..因此您可以使用線程或時間任務,或任何方式來管理這種臨時改變重點進入和從et0 .. 這裏它不需要重新啓動輸入。

希望這將幫助你..

1

你試過在即時調用您的重繪代碼之前改變/system/usr/keychars/default.kcm? (根據Android的版本,文件名可能會有所不同)。

在那裏,您不僅可以設置關鍵輸出字符,還可以設置關鍵顯示值。我沒有嘗試過,也可能會拖延,但值得一試。

0

這應該對你很有用。

EditText in = new EditText(this); 
in.addTextChangedListener(new TextWatcher() { 
    public void onTextChanged(CharSequence cs, int s, int b, int c) { 
     Log.i("Key:", cs.toString()); 
    } 
    public void afterTextChanged(Editable editable) {} 
    public void beforeTextChanged(CharSequence cs, int i, int j, int k) {} 
}); 
+0

下一次請使用發佈代碼的標籤。 – Flawyte 2012-11-08 19:39:52

相關問題