EditText入力内容の制御

  • ア、数字限定、かつソフトキーを出力しないの方法は以下通り

①インターフェイス OnTouchListener を実装する

②メソッド onTouch をオーバーライドする

1
2
3
4
5
6
@Override
public boolean onTouch(View v, MotionEvent event) {
    EditText edit = (EditText) v;
    edit.setInputType(InputType.TYPE_NULL);
    return false;
}

setOnTouchListenerEditText に関連する

1
edit.setOnTouchListener(this);

④メソッド %{color:red}onKey% をオーバーライドする

1
2
3
4
5
6
7
8
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (v instanceof EditText) {
        EditText edit = (EditText) v;
        edit.setInputType(InputType.TYPE_CLASS_NUMBER);
    }
    return false;
}
  • イ、桁数の制御について* ①インターフェイス TextWatcher を実装する

②メソッド afterTextChanged をオーバーライドする

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
@Override
public void afterTextChanged(Editable s) {
    int editSelectionStart;
    int editSelectionEnd;
    View v = getCurrentFocus();
    if (v instanceof EditText) {
        EditText edit = (EditText) v;
        editSelectionStart = edit.getSelectionStart();
        editSelectionEnd = edit.getSelectionEnd();
        if (EDITTEXT_MAXLENGTH < s.length()) {
            s.delete(editSelectionStart - 1, editSelectionEnd);
        }
    }
}

③メソッド %{color:red}「addTextChangedListener」% で %{color:red}EditText% のテキスト変更イベントに関連する

1
edit.addTextChangedListener(this);