8

に設定されたTextViewwithとにandroid:maxLength設定された別3のがあります。android:maxLength7

TextView最初の3文字TextViewがいっぱいになると、フォーカスが自動的に2番目に移動するようにします。TextViewカスタム実装を継承して記述せずにこれを実現するにはどうすればよいですか?

4

2 に答える 2

6

私は試していませんが、これはうまくいくかもしれません。

この用途のために、テキストが変更されたときに起動するようにリスナーを設定します

addTextChangedListener(TextWatcher watcher)

次に、テキストの長さに基づいて、次のフィールドへのフォーカスの変更を要求できます。

次のフィールドを見つけたい場合はView.focusSearch(View.FOCUS_FORWARD)、フォーカスをとることができる指定された方向に最も近いビューを検索を呼び出すことができます。これは実際にはそのビューに焦点を当てていません。

于 2010-05-31T12:05:00.227 に答える
5

を期待している将来の読者のために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) {
    }
});
于 2014-12-08T20:47:05.947 に答える