2017-06-05 36 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