Android 如何显示密码直到按下按钮
我已经创建了一个Android 如何显示密码直到按下按钮,android,android-layout,android-edittext,Android,Android Layout,Android Edittext,我已经创建了一个密码输入字段和一个按钮,当您单击该按钮时,它会以文本格式显示密码 问题是,它不会再次隐藏它,我希望在按下按钮之前显示密码,当用户取消触摸按钮时,它应该返回到原始密码虚线模式 我已经编写了以下代码,它将虚线密码更改为文本,但没有将文本更改为虚线密码 tvEmail.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, Moti
密码
输入字段和一个按钮
,当您单击该按钮时,它会以文本格式显示密码
问题是,它不会再次隐藏它,我希望在按下按钮之前显示密码,当用户取消触摸按钮时,它应该返回到原始密码虚线模式
我已经编写了以下代码,它将虚线密码
更改为文本,但没有将文本
更改为虚线密码
tvEmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int DRAWABLE_RIGHT = 2;
if(event.getAction() == MotionEvent.ACTION_DOWN) {
if(event.getRawX() >= (tvEmail.getRight() - tvEmail.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
tvPassword.setInputType(InputType.TYPE_CLASS_TEXT);
return true;
}
}else{
tvPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD );
}
if(event.getAction() == MotionEvent.ACTION_OUTSIDE) {
if(event.getRawX() >= (tvEmail.getRight() - tvEmail.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
tvPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD );
return true;
}
}
return false;
}
});
试试这个:
passwordShown = false;
tvEmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int DRAWABLE_RIGHT = 2;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if(event.getRawX() <= (tvEmail.getRight() - tvEmail.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
tvPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
passwordShown = true;
return true;
}
}
else if ((event.getAction() == MotionEvent.ACTION_UP ||
event.getAction() == MotionEvent.ACTION_CANCEL ||
event.getAction() == MotionEvent.ACTION_OUTSIDE) && passwordShown) {
tvPassword.setInputType(InputType.TYPE_CLASS_TEXT );
passwordShown = false;
return true;
}
return false;
}
});
passwordshow=false;
TveEmail.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
最终int可绘制的_右=2;
if(event.getAction()==MotionEvent.ACTION\u向下){
如果(event.getRawX()尝试以下操作:
passwordShown = false;
tvEmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int DRAWABLE_RIGHT = 2;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if(event.getRawX() <= (tvEmail.getRight() - tvEmail.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
tvPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
passwordShown = true;
return true;
}
}
else if ((event.getAction() == MotionEvent.ACTION_UP ||
event.getAction() == MotionEvent.ACTION_CANCEL ||
event.getAction() == MotionEvent.ACTION_OUTSIDE) && passwordShown) {
tvPassword.setInputType(InputType.TYPE_CLASS_TEXT );
passwordShown = false;
return true;
}
return false;
}
});
passwordshow=false;
TveEmail.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
最终int可绘制的_右=2;
if(event.getAction()==MotionEvent.ACTION\u向下){
如果(event.getRawX(),您可以尝试以下代码
tvEmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
tvPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
return true;
}
else if (event.getAction() == MotionEvent.ACTION_UP) {
tvPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
return true;
}
return false;
}
});
//考虑到TveEmail是按钮或文本视图,因此上述代码可以帮助您实现所需的功能您可以尝试此代码
tvEmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
tvPassword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
return true;
}
else if (event.getAction() == MotionEvent.ACTION_UP) {
tvPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
return true;
}
return false;
}
});
//考虑到tvEmail是按钮或文本视图,因此上述代码可以帮助您实现所需的功能我相信您的外部动作
应该是外部动作
外部动作
也不会改变任何东西。我相信您的外部动作
应该是外部动作
外部动作
也没有更改任何内容。这也没有将文本更改为密码。现在只是显示密码,而不是将其转换为密码text@Kirmani88添加了动作事件ACTION\u CANCEL
和ACTION\u OUTSIDE
。这也不是将文本更改为密码。现在只是显示密码,而不是转换密码进入text@Kirmani88添加了动作事件ACTION\u CANCEL
和ACTION\u OUTSIDE
。