2017-06-05 27 views
-3

我在android中有一个编辑文本用于密码字段。编辑文本的输入类型是password.To,编辑文本的右侧,I有一个按钮,它会显示密码时的按键clicked.I已经实现了在android.Below采用Motion事件“显示密码”部分是正常工作的代码:上面的代码工作在android按钮中实现运动事件以在Edittext上显示密码,并用备用按钮单击

EditText passwordET; 
Button showPassword; 

passwordET = (EditText) findViewById(R.id.passwordET); 
showPassword = (Button) findViewById(R.id.showpasswordBtn); 

showPassword.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 

       switch (motionEvent.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
         passwordET.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
         return true; 

        case MotionEvent.ACTION_UP: 
         passwordET.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
         return true; 
       } 
       return true; 
      } 
     }); 

对于用户单击按钮时显示的密码以及按钮触摸事件被移除时的情况,该文本再次变为密码字段。但是,我想要的是,如果单击按钮一次,编辑文本将显示密码,并且密码将保持显示,直到再次单击该按钮。因此,再次单击该按钮时,编辑文本将更改其状态再次输入密码。任何人都可以让我知道如何继续?

+0

最简单的方法检查这个答案:https://stackoverflow.com/a/39022642 –

+0

@JaydeepPatel其实我想要一个按钮,将文本写为“SHOW”,它将显示密码以及密码显示的时间,按钮状态将变为“隐藏”,反之亦然。 – Pranami

+0

动作动作是向上滚动等。https://developer.android.com/reference/android/view/MotionEvent.html –

回答

0

使用下面的代码:

定义一个标志,

boolean isPassWordShowing = false; 

ShowPassword点击按钮:

showPassword.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      if(isPassWordShowing) 
      { 
       passwordET.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 
       isPassWordShowing = false; 
      } 
      else 
      { 
       passwordET.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 
       isPassWordShowing = true; 
      } 


     } 
    }); 
+0

非常感谢。这就是我一直在寻找的东西。再次感谢:) – Pranami