Android EditText:Done代替Enter或Word Wrap代替多行

Android EditText:Done代替Enter或Word Wrap代替多行,android,action,android-edittext,word-wrap,multiline,Android,Action,Android Edittext,Word Wrap,Multiline,我有一个不允许换行的多行EditText。现在,只要他们单击“保存”,我就用一些空格替换退货。有没有办法用“完成”按钮替换屏幕上的“输入”按钮?(与单行编辑文本类似) 我知道我仍然应该去掉返回值(\r\n |\r |\n),因为屏幕键盘不是添加返回值的唯一方法 这是我当前的XML <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:minLin

我有一个不允许换行的多行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" />


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

我建议阅读本文

很好的例子

XML:

活动类别:

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

那么唯一的解决方案就是显示✔︎ 完成或我对带有actionLabel的多行文本执行此操作:

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

由于不鼓励只使用链接的答案,我继续使用相关代码进行编辑。谢谢@GeorgeBailey为什么在默认情况下使用单行自动获得“下一步”或“完成”功能时,示例将重点放在单行编辑文本上。只要您输入inputType textMultiLine,设置imeOption actionDone,就我所知,不会将enter键转到done按钮。@towpse,我不知道。我没有使用这个解决方案。也许你可以制定一个问题,并从一个知道的人那里得到更好的答案。如果我猜是这样的话,我会说只有将imeOption actionDone与Java类源代码的两个部分正确地结合起来,imeOption actionDone才有效。或者您应该阅读链接文章以获得进一步解释。@GeorgeBailey您是否成功地修改了多行文本框的enter/action键?只有在不使用textMultiLine时,我才能使用“完成”按钮。@towpse,我不记得了。已经6个月了。我建议您提出一个新问题,包括您尝试过的示例代码、当前结果以及所需结果的描述。这是否适用于多行文本?我只能在不使用textMultiLine的情况下使用“完成”按钮。
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
   }
}
editField.setInputType(
    InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
editText.setSingleLine(true);
editText.setLines(10);
editText.setHorizontallyScrolling(false);
editText.setImeActionLabel(getString(R.string.ready), 0);