如果我在EditText小部件上设置SingleLine = true,我得到一个单行编辑控件,不允许用户插入硬返回(单击Enter移动到下一个字段,而不是插入新行).如果我没有设置SingleLine = true,用户可以插入硬返回.
如果我设置layout_height =“wrap_content”,EditText控件将垂直增长以显示所有文本.但是,只有在SingleLine未设置为true时才执行此操作.
所以,我的问题是,是否可以获得单词换行和垂直调整大小,而不允许用户进入硬休息?我想我可以陷入进入的按键,但是我也必须抓住其他方式,他们可能会得到一个(复制/粘贴,不知道还有什么).有没有一个简单的方式来做到这一点只是正确的属性组合?
我喜欢用户可以看到所有文本的单词,与单行编辑控件的水平滚动相比,但我并不希望他们认为可以输入多行文本(而且我不想必须支持它).我想我可以将硬拷贝转换为空格,当我将数据保存到我的数据库,如果我必须(旧版应用程序我同步在PC上的数据不能处理硬回报).
解决方法
我也是在寻找一些东西来做到这一点.我找到的唯一解决方案是扩展EditText如下:
package com.kylemilligan.test; import android.content.Context; import android.util.AttributeSet; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.widget.EditText; public class NoNewlineEditText extends EditText { public NoNewlineEditText(Context context) { super(context); } public NoNewlineEditText(Context context,AttributeSet attributeSet) { super(context,attributeSet); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection connection = super.onCreateInputConnection(outAttrs); int imeActions = outAttrs.imeOptions & EditorInfo.IME_MASK_ACTION; if ((imeActions & EditorInfo.IME_ACTION_DONE) != 0) { // clear the existing action outAttrs.imeOptions ^= imeActions; // set the DONE action outAttrs.imeOptions |= EditorInfo.IME_ACTION_DONE; } if ((outAttrs.imeOptions & EditorInfo.IME_FLAG_NO_ENTER_ACTION) != 0) { outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; } return connection; } }
然后在XML中使用如下:
<com.kylemilligan.test.NoNewlineEditText android:id="@+id/noNewLineText" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="top|left" android:imeOptions="actionDone" android:minLines="5" />
希望这可以帮助!