説明した問題は、android.text.TextWatcher
を使用して解決できます。
public class CompleteSentenceWathcher implements TextWatcher {
private final String initialText;
private int start;
private int after;
private int count;
public CompleteSentenceWathcher(String initialText) {
this.initialText = initialText;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
this.start = start;
this.count = count;
this.after = after;
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(start < initialText.length()) {
if(s.toString().startsWith(initialText)) {
return;
}
if(count >= 1 && after == 0) {
if(start+count+1 <= initialText.length()) {
s.replace(start, start+count, initialText.substring(start, start+count+1));
} else {
s.replace(start, start, initialText.substring(start, start+1));
}
} else if(count == 0 && after >= 1) {
s.delete(start, start+after);
}
}
}
}
EditTextのインスタンスを作成し、TextWatcherを追加します。
EditText editText = new EditText(this);
editText.setText("I love");
editText.addTextChangedListener(new CompleteSentenceWathcher(editText.getText().toString()));
私は最初のアイデアが好きです。私は今それを試しています。 – dfetter88
あなたは正しい方向に私を指摘しました。 'TextWatcher'インターフェースを実装し、' afterTextChanged'メソッドで、最初のX文字が私が望むものかどうかを確認します。もしそうでなければ、それらを修正してください。 – dfetter88
良いアイデアは、ちょうど不思議ではない、なぜあなたはTextViewに "私は最後の時間"を入れたいのですか? – Andrew