这个“完成”按钮来自哪里?

时间:2013-07-01 16:16:22

标签: android

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

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

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

我尝试添加

    android:imeOptions="actionDone"

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

2 个答案:

答案 0 :(得分:2)

在横向模式下,大多数IME进入全屏模式,因为显示器通常太小而无法同时显示UI 键盘的有意义部分。您可以通过设置标记EditorInfo.IME_FLAG_NO_EXTRACT_UIEditorInfo.IME_FLAG_NO_FULLSCREEN来请求编辑不要这样做。 可能工作与否。但仍然需要在尽可能多的设备上进行测试,看看这是否仍然是一个很好的用户体验 - 通常情况并非如此。

答案 1 :(得分: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;
        }
    }