Android EditText:完成而不是input或换行而不是多行

我有一个不允许返回的多行EditText。 现在我只要点击保存就用一些空格来replace返回。 有没有什么办法可以用完成buttonreplace屏幕上的inputbutton? (就像是单行EditText一样)

我知道,我仍然应该删除返回( \r\n|\r|\n ),因为屏幕键盘不是添加它们的唯一方法。

这是我目前的XML

 <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:minLines="3" android:gravity="left|top" android:inputType="textMultiLine|textAutoCorrect|textCapSentences" android:imeOptions="actionDone" /> 

Solutions Collecting From Web of "Android EditText:完成而不是input或换行而不是多行"

 android:inputType="textEmailAddress|textEmailSubject" 

您需要将inputtypes设置为电子邮件地址或电子邮件主题。 任何一个都会给你你想要的结果。 shouldAdvanceFocusOnEnter()是TextView中的一个私有方法,用于确定是否input新行或将焦点移动到下一个字段。

我build议阅读这篇文章

http://savagelook.com/blog/android/android-quick-tip-edittext-with-done-button-that-c​​loses-the-keyboard

真的很好的例子

XML:

 <EditText android:id="@+id/edittext_done" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Enter some text" android:imeOptions="actionDone" /> 

自定义操作类:

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

活动等级:

 public class SampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sample_activity_layout); // sample_activity_layout contains our target EditText, target_edittext EditText targetEditText = (EditText)findViewById(R.id.target_edittext); targetEditText.setOnEditorActionListener(new DoneOnEditorActionListener()); // The rest of the onCreate() code } } 

如果您在您的XML中使用了android:inputType="textMultiLine|..." ,或者使用了相应的Java代码:

 editField.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE ); 

那么显示“完成”或“search”button的唯一解决scheme就是在这里回答这个问题:

https://stackoverflow.com/a/5037488/1071942

或见

在2.3上使用完成的SoftInput操作标签多行EditText

这是因为无论何时启用“textMultiLine”选项,它都会忽略android:imeOptions="actionDone"android:imeActionLabel="actionDone"任何设置,这是非常奇怪和令人困惑的。

我使用actionLabel为多行文本执行此操作:

 editText.setSingleLine(true); editText.setLines(10); editText.setHorizontallyScrolling(false); editText.setImeActionLabel(getString(R.string.ready), 0);