2010-10-15 63 views
3

我需要調出幾個不同的鍵盤:帶Ctrl和Alt鍵的「標準」鍵盤;也許是光標墊;等等。Android應用程序如何加載鍵盤?

我找到了Keyboard類,它可以讓我在XML資源中定義一個鍵盤。我發現KeyboardView類有一個setKeyboard方法...到目前爲止,我還沒有發現任何其他類需要Keyboard實例。如何使用KeyboardView?我嘗試添加一個到我的活動的XML;在運行時用findViewById找到它;然後撥打setKeyboard ...但這一切都搞亂了我的佈局和不是調出特殊的鍵盤。

回答

3

事實證明這是非常可行的,我最初的問題可能與更多的一般Android新手(這是我的第一個Android應用程序)有關,而不是KeyboardView。特別是,我習慣於將可視性作爲一個簡單的二元屬性。

總之:

  1. 聲明在XML文件中KeyboardViewandroid:visibility="gone"
  2. 在使視圖可見之前,請撥打setKeyboard()以連接鍵盤。這很重要,因爲KeyboardView從鍵盤獲得其大小。
  3. 要獲得原始密鑰事件,請致電KeyboardView.setOnKeyboardActionListener()。在將Dialog這個功能重構爲我的主要View之後,我將OnKeyboardActionListener功能放在了獨立的類中,但這不是必需的。
  4. 我打電話給keyboardView.setEnabled(true);。這似乎不是必要,但我不知道(但)在什麼情況下它是重要的; 也許只有當你撥打setEnabled(false)
  5. 我打電話​​- 如果用戶不會從鍵盤上方的輸入biox獲得視覺反饋,這將特別有用。
  6. 然後,用鍵盤全部設置,請致電keyboardView.setVisibility(VISIBLE);

要適當地隱藏鍵盤,只需撥打keyboardView.setVisibility(GONE);即可。要改變鍵盤(例如在shift鍵或循環鍵符號鍵上,只需再次調用setKeyboard。我使用Map<<Integer, Keyboard>來實現延遲創建模式;弱引用可能是可取的,如果程序會運行很長時間,鍵盤不會用得太多。

+0

我創建了一個GitHub存儲庫,其中包含一個完整的工作示例: https://github.com/tagadvance/ Android的鍵盤演示 – Tag 2015-10-25 07:44:45

0

KeyboardKeyboardView用於製作替代輸入法引擎(IME)。這些可以由用戶選擇,就像他們可以從Android Market安裝Swype,Graffiti等一樣。

作爲一名開發人員,您可以創建這樣的IME,但不能強制用戶使用它。

+0

呵呵。這很煩人 - 文檔肯定不會暗示這些是IME類。謝謝。 – 2010-10-15 00:37:52

+2

事實證明這不是真的。請參閱。 – 2010-10-19 00:32:52

+0

@Jon Shemitz:哈克博恩女士寫的絕對是更適合你的問題。有趣的是'KeyboardView'像一個普通的'View'一樣工作 - 當然沒有被廣泛宣傳,我當然不知道這個能力。我很抱歉。 – CommonsWare 2010-10-19 00:46:37

0

使用您的EDITTEXT鑑於inputType屬性將幫助不同的系統鍵盤(電話,電子郵件等),還附帶S​​DK中的APIDemos應用程序之間挑對如何實施強制定製的鍵盤爲你的應用的例子只要。

+0

謝謝。我不認爲'inputType'是我所需要的,但我會看看APIDemos應用程序。 – 2010-10-15 00:34:01

+0

好的,我想是時候回家了......但我一直在看APIDemos源代碼(並通過它進行搜索),並且我沒有看到有關創建自定義鍵盤的任何信息。我可以給你一個更詳細的指針嗎?提前致謝! – 2010-10-15 01:28:19

+0

我的錯誤感到抱歉,因爲您帶着鵝進行追逐,有一個示例http://code.google.com/p/android-misc-widgets/source/checkout – schwiz 2010-10-15 03:25:56

相關問題