2013-03-15 102 views
1

我试图编辑一个按钮的背景,具体取决于EditText中文本的长度。如果文本的长度为0,则背景应该是半透明的,否则应该是不透明的。但是,我无法动态更新Button的背景。如果我点击屏幕上的其他位置,则会更新按钮的背景,但不会实时更新。无法更新addTextChangedListener()中的视图

这是我使用的代码。

emailEditText.addTextChangedListener(new TextWatcher(){ 

     public void afterTextChanged(Editable s) { 
      // TODO Auto-generated method stub 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 
     } 

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

      if(s.length()!=0){ 
       submitEmail.getBackground().setAlpha(255); 
      } 
      else{ 
       submitEmail.getBackground().setAlpha(45); 
      } 


     } 

    }); 

任何帮助将不胜感激。

+0

你试过submitEmail.requestLayout() – Naveen 2013-03-15 06:28:23

+0

试试这个:http://stackoverflow.com/a/8643545/450534。这不是在“TextWatcher”中设置Alpha的解决方案,而是用于设置Alpha本身。 – 2013-03-15 06:33:27

+0

谢谢纳文。我尝试过'submitEmail.requestLayout()',但它不能帮助我解决问题。 – 2013-03-15 06:36:40

回答

1

请不要呼叫设定值后

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

     if(s.length()!=0){ 
      submitEmail.getBackground().setAlpha(255); 
     } 
     else{ 
      submitEmail.getBackground().setAlpha(45); 
     } 

     submitEmail.invalidate(); 

    }