在按钮上单击EditText中的密码可见性

时间:2015-11-18 08:34:51

标签: android android-edittext passwords visibility

我使用了edittext的默认属性将其设为“密码”字段android:password="true"

现在,除了Button之外,我还有一个EditText。我希望只要按下那个按钮,我的密码字符就可以看到,当我从按钮上移开手指时,我的密码会自动转换成点。

我很感激有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您需要在onTouchListener

上设置EditText
 passwordView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

并在ACTION_DOWN上进行

passwordView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);

ACTION_UPACTION_CANCEL

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

答案 1 :(得分:1)

这可以通过像这样的OnTouchListener轻松完成

Button yourButton = (Button)findViewById(R.id.your_button);
yourButton.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent e) {
        switch (e.getActionMasked()) {
            case MotionEvent.ACTION_DOWN: {
                //SHOW PASSWORD HERE
                return true;
            }
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP: {
                //HIDE PASSWORD HERE
                return true;
            }
            default:
                return false;
        }
    }
});

希望这会有所帮助:)

答案 2 :(得分:1)

试试这可能会对你有所帮助

button.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent e) {
        switch (e.getActionMasked()) {
            case MotionEvent.ACTION_DOWN: {
                 editText.setInputType(InputType.TYPE_CLASS_TEXT);
                return true;
            }
            case MotionEvent.ACTION_CANCEL:
            case MotionEvent.ACTION_UP: {
                      editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
                return true;
            }

        }
    }
});