我想在按下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());
}
}
});
}
答案 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
仅使用ImageView
而setTouchListener()
代替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>