2016-10-12 2 views
1

Ich arbeite an einer Anwendung, die zwei EditTexts und zwei ImageViewsändern EditText Fokus und ein Image verschwinden (ist mein Image ein Löschsymbol EditText)

Ich möchte, dass, wenn ich den Fokus auf EditText1, ImageView1 erscheint und ImageView2 verschwindet und wenn ich den Fokus auf EditText2 setze, erscheint ImageView2 und ImageView1 verschwindet.

Ich denke, ich sollte die TextWatcher() Methoden anstelle von setOnKeyListener() verwenden, aber ich weiß nicht wie.

Ich habe diesen Code in der onCreate() Methode geschrieben, aber ich habe ein Problem: wenn ich den Fokus auf EditText1 setze, muss ich etwas in es schreiben, um image_1 erscheinen zu lassen und image_2 verschwinden (und umgekehrt, wenn ich den Fokus auf EditText2)

editText1.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      image_1.setVisibility(View.VISIBLE); 
      image_2.setVisibility(View.INVISIBLE); 

      return false; 
     } 
    }); 
    editText2.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      image_1.setVisibility(View.INVISIBLE); 
      image_2.setVisibility(View.VISIBLE); 
      return false; 
     } 
    }); 
+0

Versuchen setOnFocusChangeListener für die EditText verwenden. – Mukesh

Antwort

0

Ich glaube nicht, OnKeyListener oder TextWatcher wäre die richtige Lösung für Ihre Nachfrage.

Was Sie hier stattdessen wollen, ist OnFocusChangeListener:

View.OnFocusChangeListener focusChangeListener1 = new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      image_1.setVisibility(View.VISIBLE); 
      image_2.setVisibility(View.INVISIBLE); 
     } 
    } 
    editText1.setOnFocusChangeListener(focusChangeListener1); 

    View.OnFocusChangeListener focusChangeListener2 = new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      image_1.setVisibility(View.INVISIBLE); 
      image_2.setVisibility(View.VISIBLE); 
     } 
    } 
    editText2.setOnFocusChangeListener(focusChangeListener2); 
+0

yeap ... das ist es Ich habe diesen Code in onCreate() -Methode geschrieben und das funktioniert. – farshid83

0

ich glaube, Sie TextChangedListener verwenden können:

editText1.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       imageView1.setVisibility(View.VISIBLE); 
       imageView2.setVisibility(View.INVISIBLE); 
      } 
     }); 


editText2.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 

       } 

       @Override 
       public void afterTextChanged(Editable s) { 
        imageView1.setVisibility(View.INVISIBLE); 
        imageView2.setVisibility(View.VISIBLE); 
       } 
      }); 

ich hoffe, dass es Ihnen helfen kann.