데이터를 입력받을 때 휴대폰 번호나 비밀 번호 같은 정보는 가려서 표시해주는 것이 좋다.
아래와 같은 화면 구현을 하고 싶었는데 번호를 가리고 해제하는 부분이 잘 안 됐다.. 로직을 이해하고 기억하자
처음 작성했던 코드!
visibleButton.setOnClickListener(v -> {
if (isPasswordVisible) {
phonEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
visibleButton.setBackground(getResources().getDrawable(R.drawable.visible));
isPasswordVisible = false;
} else {
phonEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
visibleButton.setBackground(getResources().getDrawable(R.drawable.invisible));
isPasswordVisible = true;
}
phonEditText.setSelection(phoneNumberInput.getEditText().getText().length());
});
당연히 될 줄 알았다..! 가려진 휴대폰 번호를 다시 보이게 하는 것 까지는 작동했지만, 다시 invisible상태로 바꾸지는 못했다..
해결
다음과 같이 코드를 수정해주니 정상작동하였다.
visibleButton.setOnClickListener(v -> {
if (isPasswordVisible) {
phonEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
phonEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
visibleButton.setBackground(getResources().getDrawable(R.drawable.visible));
isPasswordVisible = false;
} else {
phonEditText.setTransformationMethod(null);
phonEditText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
visibleButton.setBackground(getResources().getDrawable(R.drawable.invisible));
isPasswordVisible = true;
}
phonEditText.setSelection(phoneNumberInput.getEditText().getText().length());
});
phonEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
phonEditText.setTransformationMethod(null);
안드로이드의 EditText에는 inputType을 설정하여 입력되는 텍스트의 유형을 지정할 수 있다. TYPE_TEXT_VARIATION_PASSWORD를 포함한 inputType 설정은 텍스트가 비밀번호로 입력되는지를 나타내지만, 이것만으로는 입력된 텍스트를 마스킹하여 숨기는 기능은 수행하지 않는다.
반면 setTransformationMethod() 메서드는 텍스트의 표시 방식을 변경하는 데 사용된다. 비밀번호를 입력하는 경우에는 PasswordTransformationMethod.getInstance()를 설정하여 입력된 텍스트를 마스킹하여 숨길 수 있다. 이 메서드를 사용하면 텍스트가 입력된 형태 그대로 화면에 표시되는 것이 아니라, 마스킹된 형태로 표시된다.
따라서 inputType 속성은 입력된 텍스트의 유형을 정의하고, setTransformationMethod() 메서드는 입력된 텍스트의 표시 방식을 변경하는 데 사용되므로, 두 가지를 함께 사용하여 비밀번호 입력 필드의 동작과 표시를 정의할 수 있다.
'Android > Java' 카테고리의 다른 글
[Android / Java] RecyclerView 아이템 클릭 처리하기 (1) | 2024.06.10 |
---|---|
[Android / Java] RecylerView로 친구 목록 출력하기 (1) | 2024.06.10 |
[Android / Java] CustomView로 재사용성 높이기 (0) | 2024.06.05 |
[Android / Java] 색상 자료화 (0) | 2024.06.04 |
[Android / Java] 안드로이드의 4대 구성요소 (0) | 2024.06.03 |