Android:无法想象如何使用setImeActionLabel

Fel*_*lix 26 java android android-edittext

我想要做的是更改虚拟键盘中显示的默认"完成"标签.这是我没有运气的尝试:

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_DONE);
mSearchInput.setImeActionLabel(getString(R.string.search_action_label), EditorInfo.IME_ACTION_DONE);
Run Code Online (Sandbox Code Playgroud)

能干,但是,处理该按钮的点击,这一点:

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;
    }
});
Run Code Online (Sandbox Code Playgroud)

我对如何在此刻更改该按钮上的标签毫无头绪.

mer*_*nen 28

imeActionLabel套标签上的全屏IME模式右上方出现的按钮(即,当您的手机处于横向).如果要将按钮更改为键盘的右下角,可以将某些标志传递给imeOptions.

据我所知,对于那个按钮你只限于一组特定的动作(这里有完整的支持标志列表),但由于你似乎想要一个搜索按钮,所以你要做的就是稍微调整一下你的第一行并使用IME_ACTION_SEARCH:

mSearchInput.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
Run Code Online (Sandbox Code Playgroud)

请注意,该按钮的确切外观取决于输入法.默认的Android键盘显示搜索标志的放大镜,而触摸输入(HTC的键盘)似乎完全没有意识到该标志,仍显示返回按钮.

  • 软键盘没有显示,因为模拟器模拟以横向模式曝光的物理键盘(就像你打开它时软键盘不会出现在G1上).您可以通过修改AVD的config.ini文件来禁用键盘,添加`hw.keyboard = no`.至于Messaging应用程序,我刚检查了它的来源,我猜测笑脸是`inputType ="textShortMessage"的副产品,缺少"发送"按钮是由于`imeOptions ="flagNoEnterAction" `,但我实际上没有测试过它.请注意,Touch Input似乎忽略了两个标志. (3认同)
  • 从原始问题中的代码中,如果只添加此"OR"代码,则可以考虑物理键盘的"返回"按钮:if(actionId == EditorInfo.IME_ACTION_SEARCH || event.getKeyCode()== KeyEvent.KEYCODE_ENTER) (2认同)