に設定されたTextView
withとにandroid:maxLength
設定された別3
のがあります。android:maxLength
7
TextView
最初の3
文字TextView
がいっぱいになると、フォーカスが自動的に2番目に移動するようにします。TextView
カスタム実装を継承して記述せずにこれを実現するにはどうすればよいですか?
私は試していませんが、これはうまくいくかもしれません。
この用途のために、テキストが変更されたときに起動するようにリスナーを設定します
addTextChangedListener(TextWatcher watcher)
次に、テキストの長さに基づいて、次のフィールドへのフォーカスの変更を要求できます。
次のフィールドを見つけたい場合はView.focusSearch(View.FOCUS_FORWARD)
、フォーカスをとることができる指定された方向に最も近いビューを検索を呼び出すことができます。これは実際にはそのビューに焦点を当てていません。
を期待している将来の読者のためにCOPY/PASTE
int MAX_LENGTH = 3;
txt1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() == MAX_LENGTH) {
txt2.requestFocus(View.FOCUS_DOWN);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});