我如何在imageview touch上显示我的密码?

时间:2015-04-24 08:49:45

标签: android

我想在按下imageview时显示我的密码,当我释放我的触摸时,它应该隐藏。例如,如果我按下imageview 2分钟,那么密码应该可见2分钟,当我发布它应该隐藏。

我有以下代码复选框

EditText mEtPwd;
CheckBox mCbShowPwd;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // get the password EditText
    mEtPwd = (EditText) findViewById(R.id.etPassword);
    // get the show/hide password Checkbox
    mCbShowPwd = (CheckBox) findViewById(R.id.cbShowPwd);

    // add onCheckedListener on checkbox
    // when user clicks on this checkbox, this is the handler.
    mCbShowPwd.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // checkbox status is changed from uncheck to checked.
            if (!isChecked) {
                    // show password
                mEtPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
            } else {
                    // hide password
                mEtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
            }
        }
    });
}

3 个答案:

答案 0 :(得分:2)

您需要更改EditText的输入类型。

将其设为密码字段(隐藏密码):

mEtPwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
mEtPwd.setSelection(mEtPwd.getText().length());

将其设为普通字段(显示密码):

mEtPwd.setInputType(InputType.TYPE_CLASS_TEXT);
mEtPwd.setSelection(mEtPwd.getText().length());

答案 1 :(得分:2)

代替CheckBox仅使用ImageViewsetTouchListener()代替mPassField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);MotionEvent.ACTION_DOWN设置mPassField.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);以显示密码。 和MotionEvent.ACTION_UP中的 imageView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getActionMasked(); switch (action) { case MotionEvent.ACTION_DOWN: // TODO show password break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_OUTSIDE: // TODO mask password break; } return v.onTouchEvent(event); } }); 将其隐藏起来。

例如,

{{1}}

答案 2 :(得分:1)

下面是用于将editeText内容转换为位图并在按下long时将其放入imageview的代码。

IEnumerable<T>