2016-08-06 2 views
0

Password入力フィールドとbuttonを作成しました。ボタンをクリックすると、パスワードがText Formatに表示されます。ボタンを押すまでのパスワードの表示方法

問題は、それを再び隠すことはない、私はボタンが押されるまでパスワードを表示したい、ユーザがボタンを離したときは元のパスワードdottedモードに戻るべきである。

私は次のコードを書いています。Dotted passwordをテキストに変更しましたが、変更しません。textからdotted-passwordです。

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; 
     } 
    }); 
+1

私はあなたが 'ACTION_OUTSIDE'は' ACTION_UP'になると信じています – Shaishav

+0

'ACTION_UP'もそうではありません何かを変える。 – Kirmani88

答えて

1

これを試してみてください:

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; 
     } 
    }); 
+0

これもテキストをパスワードに変更していません – Kirmani88

+0

@ Kirmani88 change '> =' to '<=' – Shaishav

+0

@ Kirmani88は上記のコードでバグを修正しました。 – Shaishav

1

あなたはtvEmailが故に、コードの上に、ボタンやTextViewのいずれかで考慮//

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; 
      } 
     }); 

このコードを試すことができます機能、あなたを達成するためのお手伝いをすることができます欲しいです

+0

コードを試しましたか... –

関連する問題