2009-10-08 34 views
24

我想要做的是更改虛擬鍵盤中出現的默認「完成」標籤。這裏就是我沒有任何的運氣嘗試:Android:無法計算如何使用setImeActionLabel

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_DONE); 
mSearchInput.setImeActionLabel(getString(R.string.search_action_label), EditorInfo.IME_ACTION_DONE); 

上午能,然而,處理該按鈕的點擊,這一點:

mSearchInput.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      performSearch(); 
      return true; 
     } 
     return false; 
    } 
}); 

我無能,如何此刻我可以更改該按鈕上的標籤。

回答

25

imeActionLabel爲全屏幕IME模式(即手機處於橫向模式)時右上角顯示的按鈕設置標籤。如果要將按鈕更改爲鍵盤右下角,則可以將某些標誌傳遞給imeOptions

據我所知,對於那個按鈕,你被限制在一組特定的操作中(請參閱here瞭解支持的標誌的完整列表),但由於你似乎想要一個搜索按鈕,所有你必須做的是稍微調整你的第一線,並使用IME_ACTION_SEARCH

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH); 

你要知道,這個按鈕的確切外觀將取決於輸入法。默認的Android鍵盤顯示搜索標誌的放大鏡,而觸摸輸入(HTC的鍵盤)似乎完全不知道該標誌,仍顯示返回按鈕。

+0

這很奇怪。當我在模擬器中切換到橫向時,軟鍵盤不再出現。 此外,我注意到消息應用程序,例如,把笑臉(「:-)」),而不是「完成」按鈕。它使用自定義鍵盤佈局還是什麼? 感謝您的提示,順便說一下。 – Felix 2009-10-09 11:28:04

+3

軟鍵盤沒有顯示出來,因爲仿真器模擬了橫向模式下暴露的物理鍵盤(就像將軟鍵盤打開時軟鍵盤不會出現在G1上一樣)。您可以通過修改AVD的config.ini文件來禁用鍵盤,並添加'hw.keyboard = no'。 至於消息應用程序,我剛剛檢查了它的源代碼,並且我猜測笑臉是inputType =「textShortMessage」的副產品,缺少「發送」按鈕是由於「imeOptions =」 flagNoEnterAction「',但我沒有真正測試過它。請注意,觸摸輸入似乎忽略了兩個標誌。 – mernen 2009-10-09 22:45:02

+2

從原始問題的代碼中,如果你只是添加這個「OR」代碼,你可以考慮物理鍵盤的「返回」按鈕:if(actionId == EditorInfo.IME_ACTION_SEARCH || event.getKeyCode()== KeyEvent.KEYCODE_ENTER ) – CircuitBreaker716 2012-01-24 05:54:17