Android软键盘操作按钮

38

我的布局有4个EditText视图和一个提交Button视图。我需要为前3个EditText的每个输入框添加“下一步”按钮,并为第4个EditText字段替换软键盘的“新行”键为“完成”按钮。

如何实现这个功能?


它们是多行的吗?你使用的Android版本是什么?只是问一下... - Yousha Aleayoub
4个回答

73
在您的布局中,只需为前三个文本框设置XML属性android:imeOptions="actionNext",并为最后一个文本框设置android:imeOptions="actionDone"
参见:android:imeOptions文档 此外,在培训文档中有一个小的XML示例。

5
嗨 Martin,android:imeOptions="actionNext" 对于 android:inputType="text" 的 EditText 工作良好,但对于 android:inputType="textMultiLine" 的 EditText 则不起作用。 - Venkat Papana
@Venkat,你可以尝试使用flagNavigateNext代替:"...允许IME多行(带有回车键),并提供向前导航..."(请参见上面的第一个链接)。 - Martin Stone
我这里也是一样的 :-( -- 看起来这只能在API版本11或更高版本中使用。(该页面上的文档筛选器似乎有问题,但相应的Java常量页面可以正常使用:http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html) - Martin Stone
1
嗨,马丁,我们能为多行EditText添加“下一步”按钮吗? - Venkat Papana
1
似乎不是这样。即使使用API Level 11,如果键盘没有空间,它也不必遵守flagNavigateNext。查看手机上的一些应用程序,多行框通常位于最后,下面有一个可见的“完成”或“发送”按钮(例如电子邮件应用程序)。 - Martin Stone
显示剩余2条评论

6

要将焦点导航到下一个编辑字段,请添加

android:imeOptions="flagNavigateNext"

为了通过单击完成按钮关闭软键盘,请添加

android:imeOptions="actionDone"

在您的布局中 :)


3
在您的按钮xml中添加android:singleLine="true"

1

我认为你要找的是这样的:

EditText nextText = new EditText(this)
{
    @Override
    public InputConnection onCreateInputConnection(final EditorInfo outAttrs)
    {
        outAttrs.imeOptions |= EditorInfo.IME_ACTION_NEXT;
        return (super.onCreateInputConnection(outAttrs));
    }
};

EditText doneText = new EditText(this)
{
    @Override
    public InputConnection onCreateInputConnection(final EditorInfo outAttrs)
    {
        outAttrs.imeOptions |= EditorInfo.IME_ACTION_DONE;
        return (super.onCreateInputConnection(outAttrs));
    }
};

第一个将带用户到下一个接受文本的布局字段。第二个将关闭输入法(软键盘)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接