Android 2.35-我在屏幕上有一个多行EditText,它还有一个OK和Cancel按钮。当用户完成输入文本时,他点击OK按钮,该按钮处理输入的文本。
当在纵向模式下点击编辑文本时,软键盘会出现在"确定"one_answers"取消"按钮下方,这样就不会遮挡它们。但在横向模式下,软键盘覆盖了"确定"one_answers"取消"按钮,一个神秘的"完成"按钮出现在EditText的右侧——这是一个灰色背景上的普通按钮。敲击它会使键盘失效。
我的布局中没有定义这样的按钮!它是从哪里来的?是什么决定了它的外观、状态和属性?它的事件在哪里处理?它叫什么,这样我就能读到更多关于它的信息?
我试着添加
android:imeOptions="actionDone"
给软键盘一个完成按钮,但没有效果。我宁愿在键盘上有一个看起来像键盘其他部分的"完成"按钮,而不是这个看起来不像或不适合屏幕上其他任何东西的奇怪"完成"按键。提前感谢提供任何信息。
在横向模式下,大多数IMEs进入全屏模式,因为显示器通常太小,无法同时显示UI的有意义的部分和键盘。您可以通过设置标志EditorInfo.IME_FLAG_NO_EXTRACT_UI
或EditorInfo.IME_FLAG_NO_FULLSCREEN
来要求编辑器不要这样做。这可能工作或不工作。但这仍然取决于你在尽可能多的设备上进行测试,看看这是否仍然是一个好的用户体验——通常不是。
试试这个
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;
}
}