숨기기 및보기 암호 간을 전환하는 방법 암호를 전환 할 수있는 영리한

사용자가 안드로이드 EditText에서 숨기기 및보기 암호를 전환 할 수있는 영리한 방법이 있습니까? 많은 PC 기반 앱이이를 가능하게합니다.



답변

TextView의 속성을 동적으로 변경할 수 있습니다. XML Atrribute android:password를 true로 설정하면 뷰를 false로 설정하면 텍스트가 표시됩니다.

setTransformationMethod 메소드를 사용하면 코드에서이 속성을 변경할 수 있어야합니다. (면책 조항 :보기가 표시된 후에도 방법이 여전히 작동하는지 테스트하지 않았습니다. 문제가 발생하면 알려주십시오.)

전체 샘플 코드는

yourTextView.setTransformationMethod(new PasswordTransformationMethod());

비밀번호를 숨기려면 암호를 표시하기 위해 기존 변환 방법 중 하나를 설정하거나 입력 텍스트와 관련이없는 빈 TransformationMethod 를 구현할 수 있습니다.

yourTextView.setTransformationMethod(new DoNothingTransformation());

답변

Support Library v24.2.0 이후로 달성하기가 정말 쉽습니다.

당신이해야 할 일은 단지 :

  1. 의존성에 디자인 라이브러리 추가

    dependencies {
         compile "com.android.support:design:24.2.0"
    }
    
  2. 사용 TextInputEditText과 함께TextInputLayout

    <android.support.design.widget.TextInputLayout
        android:id="@+id/etPasswordLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true"
        android:layout_marginBottom="@dimen/login_spacing_bottom">
    
        <android.support.design.widget.TextInputEditText
            android:id="@+id/etPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/fragment_login_password_hint"
            android:inputType="textPassword"/>
    </android.support.design.widget.TextInputLayout>
    

passwordToggleEnabled속성은 일을 할 것입니다!

  1. 루트 레이아웃에서 추가하는 것을 잊지 마십시오 xmlns:app="http://schemas.android.com/apk/res-auto"

  2. 다음을 사용하여 비밀번호 토글을 사용자 정의 할 수 있습니다.

app:passwordToggleDrawable-비밀번호 입력 가시성 토글 아이콘으로 사용할 수 있습니다.
app:passwordToggleTint-비밀번호 입력 가시성 토글에 사용할 아이콘입니다.
app:passwordToggleTintMode-배경 색조를 적용하는 데 사용되는 혼합 모드.

TextInputLayout 문서 에서 자세한 내용을 참조하십시오 .

AndroidX의 경우

  • 교체 android.support.design.widget.TextInputLayoutcom.google.android.material.textfield.TextInputLayout

  • 교체 android.support.design.widget.TextInputEditTextcom.google.android.material.textfield.TextInputEditText


답변

암호 대신 점을 표시하려면 PasswordTransformationMethod를 설정하십시오.

yourEditText.setTransformationMethod(new PasswordTransformationMethod());

물론 xml 레이아웃의 edittext 요소에서 기본적으로 이것을 설정할 수 있습니다.

android:password

읽을 수있는 비밀번호를 다시 표시하려면 변환 방법으로 null을 전달하십시오.

yourEditText.setTransformationMethod(null);

답변

표시하려면 :

editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

숨기려고:

editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);

이 각각의 커서 후에 재설정됩니다.

editText.setSelection(editText.length());

답변

당신이 사용할 수있는 app:passwordToggleEnabled="true"

여기에 주어진 예가 있습니다

<android.support.design.widget.TextInputLayout
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleEnabled="true"
        android:textColorHint="@color/colorhint"
        android:textColor="@color/colortext">

답변

확인란을 사용하고 그에 따라 입력 유형을 변경하십시오.

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int start,end;
    Log.i("inside checkbox chnge",""+isChecked);
    if(!isChecked){
        start=passWordEditText.getSelectionStart();
        end=passWordEditText.getSelectionEnd();
        passWordEditText.setTransformationMethod(new PasswordTransformationMethod());;
        passWordEditText.setSelection(start,end);
    }else{
        start=passWordEditText.getSelectionStart();
        end=passWordEditText.getSelectionEnd();
        passWordEditText.setTransformationMethod(null);
        passWordEditText.setSelection(start,end);
    }
}

답변

private boolean isPasswordVisible;

private TextInputEditText firstEditText;

firstEditText = findViewById(R.id.et_first);

    private void togglePassVisability() {
    if (isPasswordVisible) {
        String pass = firstEditText.getText().toString();
        firstEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
        firstEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
        firstEditText.setText(pass);
        firstEditText.setSelection(pass.length());
    } else {
        String pass = firstEditText.getText().toString();
        firstEditText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
        firstEditText.setInputType(InputType.TYPE_CLASS_TEXT);
        firstEditText.setText(pass);
        firstEditText.setSelection(pass.length());
    }
    isPasswordVisible= !isPasswordVisible;
}