代码之家  ›  专栏  ›  技术社区  ›  Saurabh Mishra Kintan Patel

当编辑文本不在焦点时,使用textinputlayout隐藏密码切换

  •  0
  • Saurabh Mishra Kintan Patel  · 技术社区  · 7 年前

    这是我在项目中使用的代码:

    <android.support.design.widget.TextInputLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/signup_input_full_name_wrapper"
            android:layout_marginEnd="@dimen/signup_edit_text_input_fullname_margin_right"
            android:layout_marginRight="@dimen/signup_edit_text_input_fullname_margin_right"
            android:layout_marginStart="@dimen/signup_edit_text_input_fullname_margin_left"
            android:layout_marginLeft="@dimen/signup_edit_text_input_fullname_margin_left"
            android:layout_marginTop="@dimen/signup_edit_text_input_fullname_margin_top"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/signup_input_password_wrapper">
        <EditText
            android:id="@+id/signup_input_full_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textPersonName"
            android:hint="Full Name"
            android:textSize="@dimen/signup_edit_text_input_fullname_text_size"
            android:textColorHint="@color/signup_edit_text_hint_color"
             />
    </android.support.design.widget.TextInputLayout>
    

    这就像它说的那样工作,也就是说,它为嵌套的编辑文本提供了一个密码切换。 我想要的是,当编辑文本没有焦点时,如果有任何方法可以隐藏它??

    2 回复  |  直到 7 年前
        1
  •  1
  •   secret paladin    7 年前

    这可能不是最佳实践,而是它的工作。

    您的XML:

               <android.support.design.widget.TextInputLayout
                    android:id="@+id/etPasswordLayout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:passwordToggleEnabled="false">
    
                    <android.support.design.widget.TextInputEditText
                        android:id="@+id/etPassword"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:hint="password"
                        android:inputType="textPassword"/>
                </android.support.design.widget.TextInputLayout>
    

    你的活动或片段:

    etPassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean isFocused) {
                    if(!isFocused){
                        etPasswordLayout.setPasswordVisibilityToggleEnabled(false);
                    }else{
                        etPasswordLayout.setPasswordVisibilityToggleEnabled(true);
                    }
                }
            });
    
        2
  •  0
  •   Saurabh Mishra Kintan Patel    7 年前

    我实现了这里所说的,并对我想要发布的内容做了一些修改。

    private EditText etPassword;
    private TextInputLayout etPasswordLayout;
    //View componenets initialization
        etPassword = findViewById(R.id.signup_input_password);
        etPasswordLayout = findViewById(R.id.signup_input_password_wrapper);
    
    
        //toggling the password view functionality
        etPassword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean isFocused) {
                if(!isFocused){
                    etPasswordLayout.setPasswordVisibilityToggleEnabled(false);
                }else{
    
                    etPassword.addTextChangedListener(new TextWatcher() {
                        @Override
                        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
                        }
    
                        @Override
                        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
                            if(etPassword.getText().toString().length() > 0) {
                                etPasswordLayout.setPasswordVisibilityToggleEnabled(true);
                            }
                            else{
                                etPasswordLayout.setPasswordVisibilityToggleEnabled(false);
                            }
                        }
    
                        @Override
                        public void afterTextChanged(Editable editable) {
    
                        }
                    });
    
                }
            }
        });
    

    推荐文章