この場合、私にとって本当にうまくいった唯一のことは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;
}
}});
そして、私の構成からの興味深い行:
<EditText
...
android:singleLine="true"
android:inputType="text|textMultiLine"
android:imeOptions="actionDone"
/>
Enter キーを押したときに非表示にしてフォーカスを外したい場合EditText
は、上記のコードを次のように置き換えます。
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;
}
}});