Android: EditText 동적 입력 수신 TextWatcher

3447 단어
우리는 이름, 비밀번호가 모두 입력되어야만 로그인 단추를 눌러야 클릭할 수 있는 기능 코드와 유사하게 Text Watcher 아래에서 두 개EditText etLoginname,etLoginpwd;의 동적 입력을 감청하는 것을 자주 본다. 두 개의 Edit Text가 모두 내용이 있을 때Button btLogin; 클릭할 수 있는 코드는 다음과 같다.
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //etLoginname= findViewById();
        //etLoginpwd= findViewById();
        //btLogin=findViewById();
      etLoginname.addTextChangedListener(new MyTextWatcher());
    etLoginpwd.addTextChangedListener(new MyTextWatcher());
    }

 private class MyTextWatcher implements TextWatcher {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            ALog.i("keychange", "before");
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            ALog.i("keychange", "on");
            if (!TextUtils.isEmpty(etLoginname.getText().toString()) && !TextUtils.isEmpty(etLoginpwd.getText().toString())) {
                btLogin.setBackgroundResource(R.color.white);
                btLogin.setEnabled(true);
            } else {
                btLogin.setBackgroundResource(R.color.gray);

                btLogin.setEnabled(false);
            }
        }

        @Override
        public void afterTextChanged(Editable s) {
            ALog.i("keychange", "after");
        }
    }

어떤 사람들은 setOnKey Listener () 라는 방법을 사용하지만 api를 보면 이 방법을 발견할 수 있습니다: * Register a callback to be invoked when a hardware key is pressed in this view. *Key presses in software input methods will generally not trigger the methods of * this listener. * @param l the key listener to attach to this view는 하드웨어에 사용되는 키로 이전에는 터치스크린이 아닌 핸드폰에 적용되었으나 지금은 전체 터치스크린 입력법 Enter 키와 같은 버튼만 적용됩니다.

좋은 웹페이지 즐겨찾기