And*_*Dev 2 android android-edittext
是否可以有一个EditText,其中文本区域的高度为多行,但该文本实际上只是换行文本,但禁止输入新行。我能想到的唯一解决方案是允许用户输入新行,但仅在按键上或输入文本后用空格替换新行字符。这是我所拥有的:
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:minLines="3"
android:textSize="24sp" />
Run Code Online (Sandbox Code Playgroud)
这就是我在The Rideshare应用程序中使用的,效果很好。我的目标SDK是17(Android 4.0.3)。
<EditText
android:inputType="text|textMultiLine|textCapSentences"
android:layout_margin="1dp"
android:gravity="top"
android:background="#FFEBCD"
android:textSize="26sp"
android:id="@+id/offer_notes"
android:padding="10dp"
android:textColor="#000"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingLeft="5sp"
android:hint="Notes, e.g. $10 per passenger, leaving early morning 7AM from Bay and Yonge intersection, no smoking or pets, please. Chevy Venture, very comfortable.">
</EditText>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,唯一真正对我有用的是添加一个InputFilter防止\n输入换行符的方法。
代码:
editText.setFilters(new InputFilter[]{new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source != null) {
String s = source.toString();
if (s.contains("\n")) {
return s.replaceAll("\n", "");
}
}
return null;
}
}});
Run Code Online (Sandbox Code Playgroud)
我的配置中有趣的几行:
<EditText
...
android:singleLine="true"
android:inputType="text|textMultiLine"
android:imeOptions="actionDone"
/>
Run Code Online (Sandbox Code Playgroud)
如果您想EditText在按下 Enter键时隐藏和不聚焦,请将上面的代码替换为:
editText.setFilters(new InputFilter[]{new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source != null) {
String s = source.toString();
if (s.contains("\n")) {
// Hide soft keyboard
InputMethodManager imm = (InputMethodManager)MainActivity.this.getBaseContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
// Lose focus
editText.clearFocus();
// Remove all newlines
return s.replaceAll("\n", "");
}
}
return null;
}
}});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5818 次 |
| 最近记录: |