-
Android Studio EditText 최소 글자 제한하기(최소 N글자 이상 입력하게끔)Android Studio 2021. 3. 28. 04:40
졸업작품이 거의 다 마무리 되어가는 시점에서 잡다한 것들 조금 더 추가해보려고 손대고 있던 중, 회원가입시 ID나 PW의 최소 글자수 제한이 있으면 좋겠다고 생각했다. (애초에 회원가입은 너무 길어서 문제된다기보다는 너무 짧아서 문제되는 경우가 많으니) 보통 EditText에서 최대글자수 N자 안 넘게끔 만드는건 서치가 잘 되는데 반대의 경우는 잘 안나오길래 혹시 도움이 될까 싶어서 포스팅하는 글 :D
* 결론적으로는 EditText에다가 setOnFocusChangeListener를 해주면된다.
아래 첨부한 코드는 안드로이드 스튜디오에서 내가 실제 사용한 코드를 가져왔다.
//id_input은 EditText이름이다. 위에 선언되어 있다고 가정 id_input = findViewById(R.id.input_id); id_input.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(!hasFocus) { if(id_input.length() < 8) { AlertDialog.Builder builder = new AlertDialog.Builder(CreateAccount.this,R.style.MinLengthDialogTheme); builder.setMessage("ID는 8자 이상이어야 합니다."); builder.setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.show(); } } } });
id_input이라는 EditText에 입력된 string의 길이가 8 미만일 경우, 사용자가 다른 곳으로 포커스를 옮겼을때, 즉 입력하는 edittext칸을 벗어났을 때 바로 AlertDialog를 띄워준다. (화면에서 잘라오느라 이미지가 좀 작음...)
그리고 아래 코드로 style.xml에 내가 지정해둔 style을 불러와서 배경색을 바꿔주었다.
AlertDialog.Builder builder = new AlertDialog.Builder(CreateAccount.this,R.style.MinLengthDialogTheme);
그러고 나서 ok 버튼이 눌리면 dismiss()해줌으로써 창을 내린다. 물론 저렇게 경고를 띄워서 ok눌렀을 시 안고치는 사람도 있을 수 있으니 최종적으로 서버에 전달하기 전에 Toast메시지 띄우는 처리도 해두었다.
if((id_input.length() < 8) || (pw_input.length() < 8)) { Toast.makeText(getApplicationContext(), "ID 및 비밀번호는 8자이상이어야 합니다.", Toast.LENGTH_SHORT).show(); }
참고1. onFocusChange의 인터페이스를 살펴보면, 아래와 같다.
focus가 움직여져서 view가 바뀌었을때 호출된다.
참고2. TextWatcher
직접 사용해본 결과 한 글자 칠때마다 계속 8자 이상 입력해줘! 8자 이상 입력해줘! 이래서 못 쓴다.. 물론 내가 익숙치 않아서 제대로 사용하지 못한 걸 수도 있지만...
아래 표는 TextWatcher에 정의되어 있는 함수이다.
저기서 afterTextChanged를 사용하면, text에 변화가 일어날 때마다 호출되기때문에 ^_^... 최대글자수 제한에는 유용하게 쓸 수 있을지언정 최소 글자수 제한에는 사용이 불편하다.
쨌든 따로 확인버튼을 만들어서 그때 처리할게 아니라 EditText입력 끝나고 바로 최소글자수 제한 검사를 할거라면 위에 써둔 setOnFocusChangeListener을 유용하게 쓸 수 있을것 같다. (공식 문서 링크 첨부)
developer.android.com/reference/android/view/View.OnFocusChangeListener
'Android Studio' 카테고리의 다른 글
Android Studio - Retrofit @Multipart 이미지 & @PartMap으로 데이터 전송하기 (6) 2021.04.05 Android Studio - 주소 찾기 with getSubAdminArea(), getSubLocality() (0) 2021.03.18 Android Studio - 지오코딩, 역지오코딩(feat.GoogleMapAPI) (0) 2021.03.15 Android Studio - Retrofit 이용한 서버와의 통신 (0) 2021.02.28 Android Studio - Google Map API 협업 / Git에 업로드 (0) 2021.02.01