2013-07-01 144 views
0

Android 2.35 - 我有一个多行EditText屏幕上也有一个确定和取消按钮。当用户完成输入文本时,他点击确定按钮,处理输入的文本。这个“完成”按钮从哪里来?

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

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

我尝试添加

android:imeOptions="actionDone" 

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

+0

你没做什么 - 这是Android的手柄'EditText'在横向模式下如何。在风景中,编辑文本发生在全屏幕,“完成”按钮表示用户正在编辑,现在可以返回到普通视图。 – Nikhil

+0

那么决定它的外观呢?这是一种通用的灰色和通用系统字体,因此它不适用于我的布局样式或软键盘。 – user316117

回答

2

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

+0

很好的解释。另外 - 全屏编辑UI存在的原因是在手机的横向模式下,放置软键盘后通常只剩下很小的空间,导致用户界面无法使用。这就是为什么Android在手机上创建它并默认使用它的原因。这也是为什么它通常不是平板电脑的默认设置 - 更大的屏幕意味着它不是必需的。 –

+0

@他 - 谢谢。那么决定它的外观呢?这是一种通用的灰色和通用系统字体,因此它不适用于我的布局样式或软键盘。我如何设计它?另外,这个叫什么,所以我可以在Android文档中查看它? – user316117

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; 
     } 
    }