2009-10-08 71 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