我们可能会遇到在输入密码的时候,在其右方会有一个图标,可以切换密码内容的可见性。那我们该如何来实现呢?
private EditText password;
private ImageView eyeImageView;
boolean flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
init();
}
private void init() {
password = (EditText) findViewById(R.id.password);
eyeImageView = (ImageView) findViewById(R.id.eye);
eyeImageView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.eye:
// 是否显示密码
if (!flag) {
password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
eyeImageView.setBackgroundResource(R.drawable.eye2);
} else {
password.setTransformationMethod(PasswordTransformationMethod.getInstance());
eyeImageView.setBackgroundResource(R.drawable.eye);
}
flag = !flag;
password.postInvalidate();
CharSequence text = password.getText();
if (text instanceof Spannable) {
Spannable spanText = (Spannable) text;
Selection.setSelection(spanText, text.length());
}
break;
}
}