Android EditText:Done代替Enter或Word Wrap代替多行
我有一个不允许换行的多行EditText。现在,只要他们单击“保存”,我就用一些空格替换退货。有没有办法用“完成”按钮替换屏幕上的“输入”按钮?(与单行编辑文本类似) 我知道我仍然应该去掉返回值(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
\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);