0

Android 2.35 - 我在屏幕上有一个多行 EditText,它也有一个 OK 和一个 Cancel 按钮。当用户完成输入文本时,他点击 OK 按钮,该按钮处理输入的文本。

当在纵向模式下点击 Edittext 时,软键盘出现在 OK 和 Cancel 按钮下方,因此不会遮挡它们。但是在横向模式下,软键盘覆盖了确定和取消按钮,并且在 EditText 的右侧出现了一个神秘的“完成”按钮——它是一个灰色背景上的普通按钮。点击它会关闭键盘。

我的布局中没有定义这样的按钮!它从何而来?是什么决定了它的外观、状态和属性?它的事件在哪里处理?它叫什么,所以我可以阅读更多关于它的信息?

我尝试添加

    android:imeOptions="actionDone"

到我的 Edittext 给软键盘一个完成按钮,但它没有效果。我宁愿在键盘上有一个看起来像键盘其余部分的“完成”按钮,而不是这个看起来不像或不适合屏幕上其他任何东西的奇怪“完成”按钮。提前感谢您提供任何信息。

4

2 回答 2

2

在横向模式下,大多数 IME 进入全屏模式,因为显示器通常太小而无法同时显示 UI键盘的有意义的部分。您可以通过设置标志EditorInfo.IME_FLAG_NO_EXTRACT_UIEditorInfo.IME_FLAG_NO_FULLSCREEN. 这可能有效,也可能无效。但是,您仍然需要在尽可能多的设备上进行测试,看看这是否仍然是一个好的用户体验——通常不是。

于 2013-07-01T16:22:36.853 回答
1

试试这个

edittext.setOnEditorActionListener(new DoneOnEditorActionListener());

并使用这个类

class DoneOnEditorActionListener implements OnEditorActionListener {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                InputMethodManager imm = (InputMethodManager) v.getContext()
                        .getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
                return true;
            }
            return false;
        }
    }
于 2013-07-01T16:23:08.850 回答