私のコメントで既に述べたように、TextWatcherを使って変更を聞きます。残念ながら、(この回答を書いている時点で)これを行う他の方法はありません。あなたの2番目のコメントによると、ここでは最適化の提案です。
リスナーはクラスでも、スタンドアロンクラスでもかまいません。現在のクラスまたは匿名の内部クラスである必要はありません。
public class SingleLineET implements TextWatcher {
EditText et;
public SingleLineET(EditText et){
this.et = et;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
String converted = s.toString();
if(converted.contains("\n")){
//There are occurences of the newline character
converted = converted.replace("\n", "");
et.setText(converted);
}
}
@Override
public void afterTextChanged(Editable s) {
}
}
をそして、あなたがリスナーを持ちたいwhereever、あなたは単に実行します:たとえば、あなたはこのようなクラスを作成することができます
EditText theET = ...;
theET.addTextChangedListener(new SingleLineET(theET));
をそして、あなたは場所の量を削減することを好むあなた同じボイラープレートコードが必要です。
は、Androidの今後のリリースにおけるいくつかの代替があってもよい(または誰かがこれを自動化ビューを作成する)が、それまで、そのための手動作成コードの代わりにクラスを使用するたびに、少なくともいくつかの行をダウンカット
出典
2017-11-23 20:27:32
Zoe
テキストの変更を聞き、テキストに改行文字( '\ n')が含まれているかどうかを確認し、空白(または何もない)に置き換えて何かが変更された場合にテキストを設定します。 – Zoe
これは現在私がやっていることです。もっと良い方法はありませんか?私はプロジェクト全体で10以上の場所にこの種の入力を持っています。 – Kidades